#0
by Stella0608
БП 2.0. Есть внешняя обработка, создающая проводки в документе Операция (бух.) Делается это так: 1) создается структура, содержащая проводки документа. По реквизитам совпадает с движениями документа. Код могу привести. 2) Далее выполняется такая вот конструкция: В данном случае: Документ = найденный документ Операция (бух.). Тип - ДокументОбъект. По умолчанию подразумевается, что документ найден и существует в базе. При выполнении вышеописанно конструкции проводки документа перезаписываются. Необходимо, чтобы они дополнялись. Т.е. существующие движения оставались нетронутыми, в то время как движения из структуры дозаписывались. При этом максимально не страдала производительность. Как это можно сделать? P.S. В 8.2 не особо сильна, я больше по 7.7.
#3
by Stella0608
Данный код писала не я, структура была создана с целью оптимизации. Самое банальное что приходит в голову - дополнить структуру уже имеющимися проводками. Но есть подозрение, что это долго и есть более простой способ.
#4
by zak555
РегистрБухгалтерииНаборЗаписей.<Имя регистра бухгалтерии> (AccountingRegisterRecordSet.<Имя регистра бухгалтерии>) Загрузить (Load) Синтаксис: Загрузить(<Таблица значений>) Параметры: <Таблица значений> (обязательный) Тип: ТаблицаЗначений. Таблица значений, содержащая данные для заполнения набора записей. Описание: Загружает набор записей значениями из переданной таблицы значений. При этом все прежние записи набора удаляются. Заполняются значения доступных для записи свойств записей регистра бухгалтерии, имена которых совпали c именами колонок таблицы значений. Для каждого субконто создается пара колонок с идентификаторами вида ВидСубконто<Номер>, Субконто<Номер>, для регистра не поддерживающего корреспонденцию, и ВидСубконтоДт<Номер>, СубконтоДт<Номер>, ВидСубконтоКт<Номер>, СубконтоКт<Номер>, для регистра поддерживающего корреспонденцию. При этом номера <Номер> могут не совпадать с номерами видов субконто на соответствующем счете. Пример:
#5
by Stella0608
Т.е. предлагаете выгрузить уже существующие записи в ТЗ? Насколько я помню, у ТЗ тоже нет метода "догрузить" (а так порой не хватает :
#11
by zak555
нет, в БП у дока операция есть табличная часть (ТЧ) грузить туда данные то структуры, какой есть как загрузить в ТЧ, записываешь документ и сам типовой алгоритм записи документа создаст движения ведь, если юзер зайдёт в этот док операция и нажмёт записать -- всё пропадёт
#12
by Stella0608
Немного непонятно. То, что я уловила - скрещиваются 2 ТЗ (из документа и новая из структуры) и уже грузятся в готовый док. Вот как пока для меня непонятно. Вариант с циклом боюсь будет долгий, временная ТЗ - еще дольше. Хотя другого варианта пока не вижу...
#14
by Stella0608
Скажу честно, этот код писала не я, и додумалась до него тоже не я :). Но мне было сказано, что он был написан для оптимизации. Похоже единственный на данный момент способ решения проблемы, которая есть - дополнять ТЗ данными в цикле :(. Если кто-нибудь подскажет более оптимальный, буду очень благодарна. Пока я его не вижу. "Описание: Загружает набор записей значениями из переданной таблицы значений. При этом все прежние записи набора удаляются." Вот последнее предложение убрать либо сделать параметром и все было бы зашибись :(.
#16
by kotletka
если попробовать через ЗаполнитьЗначенияСвойств(Документ.движения.Хозрасчетные, СтруктураДок.Движения)
#18
by Stella0608
Так, можно по порядку? Что именно делает исходный код? Я подозреваю, что конструкция Документ.Движения[Движение.Имя].Загрузить(Движение.Данные); загружает в документ Операция данные из ТЗ. А вот зачем нужна конструкция ЗаполнитьЗначенияСвойств(Документ, СтруктураДок); Она вообще зависит от заполненности ТЗ?
#25
by Stella0608
Это очевидно, т.к. она глобальная. Но что именно? Есть структура. И в этой структуре есть ТЗ с движениями. Этот метод эти самые движения пишет из структуры? Если да, то какой смысл в следующих строчках кода? :(
#29
by Stella0608
Исходная задача поставлена так: добавить на форму внешней обработки флаг. Если ложь - движения перезаписывать, если нет, дозаписывать. С флагом я сама разберусь, нужно понять исходный код.
#39
by zak555
РегистрБухгалтерииНаборЗаписей.<Имя регистра бухгалтерии>.Загрузить (AccountingRegisterRecordSet.<Имя регистра бухгалтерии>.Load) РегистрБухгалтерииНаборЗаписей.<Имя регистра бухгалтерии> (AccountingRegisterRecordSet.<Имя регистра бухгалтерии>) Загрузить (Load) Синтаксис: Загрузить(<ТаблицаЗначений>) Параметры: Тип: ТаблицаЗначений. Таблица значений, содержащая данные для заполнения набора записей. Описание: Загружает набор записей значениями из переданной таблицы значений. При этом все прежние записи набора удаляются. Заполняются значения доступных для записи свойств записей регистра бухгалтерии, имена которых совпали c именами колонок таблицы значений. Для каждого субконто создается пара колонок с идентификаторами вида ВидСубконто<Номер>, Субконто<Номер>, для регистра не поддерживающего корреспонденцию, и ВидСубконтоДт<Номер>, СубконтоДт<Номер>, ВидСубконтоКт<Номер>, СубконтоКт<Номер>, для регистра поддерживающего корреспонденцию. При этом номера <Номер> могут не совпадать с номерами видов субконто на соответствующем счете. Доступность: Сервер, толстый клиент, внешнее соединение. Пример:
#40
by Stella0608
Я конечно безнадежна, но синтаксис помошник читать умею. :) Вопрос в другом: Методы ЗаполнитьЗначенияСвойств и Загрузить - не взаимозаменяемы ли они? Если нет, то что именно делает первым? Прошу объяснить доступным языком для блондинок :). Ну туплю я сегодня, голова болит, у всех бывает :(.
#42
by zak555
Глобальный контекст.ЗаполнитьЗначенияСвойств (Global context.FillPropertyValues) Глобальный контекст (Global context) ЗаполнитьЗначенияСвойств (FillPropertyValues) Синтаксис: ЗаполнитьЗначенияСвойств(<Приемник>, <Источник>, <СписокСвойств>, <ИсключаяСвойства>) Параметры: Тип: Произвольный. Значение, чьи свойства будут заполнены значениями соответствующих свойств <Источника>. Тип: Произвольный. Значения свойств данного объекта будут установлены в соответствующие свойства <Приемника>. Тип: Строка. Список имен свойств, разделенный запятыми, которые необходимо заполнить. Если свойства не указаны, то копируются только те, которые представлены и в <Источнике> и в <Приемнике>. Если свойства указаны, то они обязательно должны присутствовать в обоих объектах. Если в <Источнике> или <Приемнике> заданное свойство отсутствует, то будет вызвано исключение. <ИсключаяСвойства> (необязательный) Тип: Строка. Список имен свойств, разделенный запятыми, которые необходимо исключить из заполнения. Описание: Копирует значения свойств <Источника> в свойства <Приемника>. Сопоставление производится по именам свойств. Если указаны копируемые свойства, то в заполнении участвуют только они, параметр <ИсключаяСвойства> игнорируется. В противном случае, если указан параметр <ИсключаяСвойства>, то свойства перечисленные в нем, исключаются из обработки. Доступность: Тонкий клиент, веб-клиент, сервер, толстый клиент, внешнее соединение.
#43
by zak555
в ДвижениеИзСтруктурыДок -- это как бы одна "строка" т.е. эту строку "копируем" в НовоеДвижение
#44
by Stella0608
Немного непонятна вот эта строка. ЗаполнитьЗначенияСвойств(НовоеДвижение, ДвижениеИзСтруктурыДок); Она проводки что ли не заполняет? Если нет, то что она вообще делает? :)
#45
by sidalexsandr
Глобальный контекст (Global context) ЗаполнитьЗначенияСвойств (FillPropertyValues) Синтаксис: ЗаполнитьЗначенияСвойств(<Приемник>, <Источник>, <СписокСвойств>, <ИсключаяСвойства>) Параметры: Тип: Произвольный. Значение, чьи свойства будут заполнены значениями соответствующих свойств <Источника>. Тип: Произвольный. Значения свойств данного объекта будут установлены в соответствующие свойства <Приемника>. Тип: Строка. Список имен свойств, разделенный запятыми, которые необходимо заполнить. Если свойства не указаны, то копируются только те, которые представлены и в <Источнике> и в <Приемнике>. Если свойства указаны, то они обязательно должны присутствовать в обоих объектах. Если в <Источнике> или <Приемнике> заданное свойство отсутствует, то будет вызвано исключение. <ИсключаяСвойства> (необязательный) Тип: Строка. Список имен свойств, разделенный запятыми, которые необходимо исключить из заполнения. Описание: Копирует значения свойств <Источника> в свойства <Приемника>. Сопоставление производится по именам свойств. Если указаны копируемые свойства, то в заполнении участвуют только они, параметр <ИсключаяСвойства> игнорируется. В противном случае, если указан параметр <ИсключаяСвойства>, то свойства перечисленные в нем, исключаются из обработки. Доступность: Тонкий клиент, веб-клиент, сервер, толстый клиент, внешнее соединение.
#50
by Stella0608
Меня на данный момент интересует что именно делает эта строка: Что делает этот метод я примерно представляю. Вопрос в том, что он делает в данном конкретном случае!
#56
by Stella0608
У меня счета Дт, Кт и субконто хранятся в ТЗ. Общая организация обработки такая (цель - импорт данных из txt файла): 1) делается цикл собственно по txt файлу. 2) создается структура идентичная документу ОперацияБух 3) в цикле по файлу пытаемся создать нужных контрагентов, товаров и т.п.. Попутно в структуру в элемент Движения, тип у которого - ТЗ, пихаем сами проводки. 4) если возник сбой на этапе загрузки, обработка ничего не делает и пишет "ошибка". 5) если все отработало нормально, делается цикл по структуре и уже оттуда записываются уже готовые сформированные проводки в документ Операция. В данном случае идет их перезапись.
#63
by zak555
для Каждого ДвижениеИзСтруктурыДок Из СтруктураДок.Движения Цикл на для Каждого ДвижениеИзСтруктурыДок Из СтруктураДок.Движения.Данные Цикл
#64
by Stella0608
Аналогичная ошибка. {ВнешняяОбработка.ОбщМодульФУТД.МодульОбъекта}: Ошибка при вызове метода контекста (Записать): Запись не верна! Не заполнены оба счета! (Регистр бухгалтерии: Журнал проводок (бухгалтерский и налоговый учет); Номер строки: 1)
#68
by Stella0608
{ВнешняяОбработка.ОбщМодульФУТД.МодульОбъекта(36,44)}: Переменная не определена (Движения) ЗаполнитьЗначенияСвойств(<<?>>Движения[Движение.Имя].Добавить, ДвижениеТЗ); (Проверка: Толстый клиент (обычное приложение)) Не будет тебе стриптизу :))).
#70
by Stella0608
Метод Документ.Движения.Хозрасчетный возвращает тип данных РегистрБухгалтерииНаборЗаписей.Хозрасчетный а как мне подобраться к проводкам уже найденного документа?
#72
by Stella0608
Столкнулась с таким моментом. Набор записей надо было прочитать, иначе он банально перезаписывался даже с использованием метода добавить. Но! это не сильно помогло, т.к. регистратор и активность принудительно проставлялись только после записи документа, и при попытке дозаписи проводок документ ругался "запись не активна". Сделала через времянку как советовали в самом начале темы, т.к. "надо было сделать еще вчера". Если кто-то подскажет более красивое решение, буду благодарна.
Тэги: 1С 8
Ответить:
Комментарии доступны только авторизированным пользователям
Похожие вопросы 1С
- v8 строка подключения V8.Connect
- Волшебнику и всем кто поможет по теме "v8 УРБД на v8 за четыре шага"
- v8: при v8 = Новый COMОбъект("V8.Application") дает ошибку ..
- v8: Не могу подключиться из V8 к V8
- v8: есть ли аналоги openconf для 1с v8
- v8: Как удалить 1С v8 ?
- v8: COM соединение к v8, не могу получить доступ к методом модуля внешних с
В этой группе 1С
- Почему не закрывается счет 44 в УПП 1.3.27
- Ввод начальных остатков УТ 10.3
- БП 2.0: Не начислилась амортизация НМА за ноябрь
- Событие ДокументСформирован()
- Не запускается типовая, под определенным пользователем
- v7: Сбрасываются настройки торгового оборудования при выходе из 1С
- Работа сканера штрихкодов в Альфа-Авто ред. 5
- УПП, РАУЗ, расчет себестоимости
- Использование imagemagick
- БГУ 8.2. При отмене проведения РКО выходит предупреждение. Можно его отменить?
- БСП и работа в модели сервиса
- СКД: Раскрасить чересстрочно строки, запретить изменение заголовка отчета.
- УФ Как правильно сделать - открыть форму перед открытием другой?
- УТ 11 Как записать дополнительный реквизит в номенклатуру
- Как запретить ручной выбор дисконтной карты?
- Закупочная цена в УТ 10.3
- БП 2.0 Транспортный налог
- отказ создания строки тч при загрузке с помощью КД
- Сканер штрихкодов подключен, но поиск и подбор по штрикоду не работает.
- Как правильней сч=сч+1 или тз.Индекс(текСтрока)?