Доброго времени суток, подскажите ответ на такой казалось бы простой вопрос. Не записываются программно созданные документы.
Документ "Поступление товаров и услуг", при проведении получаю ошибку "...розничная цена не равна учетной...сделайте переоценку". Решил сделать чтобы автоматически добавлялись соответствующие строки в документ "Переоценка товаров в рознице". В модуль документа "Поступления.." в процедуру ОбработкаПроведения, после формирования ТаблицыПоТоварам(с дополнительными колонками "УчетнаяЦена" и "РозничнаяЦена") добавил код
Для Каждого СтрокаТаблицы Из ТаблицаПоТоварам Цикл
ДопустимоеОтклонение = СтрокаТаблицы.УчетнаяЦена * 0,1;
Если СтрокаТаблицы.РозничнаяЦена = 0 Тогда
//Сделать установку цен номенклатуры автоматически
Продолжить;
ИначеЕсли СтрокаТаблицы.УчетнаяЦена = 0 Тогда
Продолжить;
ИначеЕсли СтрокаТаблицы.РозничнаяЦена - СтрокаТаблицы.УчетнаяЦена > ДопустимоеОтклонение
ИЛИ СтрокаТаблицы.РозничнаяЦена - СтрокаТаблицы.УчетнаяЦена < - ДопустимоеОтклонение Тогда
//Переоценку товаров в рознице автоматически
ВыборкаДокументПереоценки = Документы.ПереоценкаТоваровВРознице.Выбрать(НачалоДня(Дата),КонецДня(Дата)+1,,"Дата Убыв");
Если ВыборкаДокументПереоценки.Следующий() Тогда
ДокументПереоценки = ВыборкаДокументПереоценки.ПолучитьОбъект();
Иначе
ДокументПереоценки = Документы.ПереоценкаТоваровВРознице.СоздатьДокумент();
ЗаполнениеДокументов.ЗаполнитьОбязательныеРеквизитыШапкиНовогоДокумента(ДокументПереоценки, глЗначениеПеременной("глТекущийПользователь"));
ДокументПереоценки.Дата = НачалоДня(Дата);
ДокументПереоценки.Склад = Справочники.Склады.НайтиПоКоду("000000002");//Розничный склад
ДокументПереоценки.Организация = глЗначениеПеременной("ОсновнаяОрганизация");
ДокументПереоценки.Записать(РежимЗаписиДокумента.Запись);
КонецЕсли;
СтрокаТЧ = ДокументПереоценки.Товары.Добавить();
СтрокаТЧ.Номенклатура = СтрокаТаблицы.Номенклатура;
СтрокаТЧ.Количество = СтрокаТаблицы.Количество;
СтрокаТЧ.ЦенаВРознице = СтрокаТаблицы.РозничнаяЦена;
СтрокаТЧ.ЦенаВРозницеСтарая = Макс(СтрокаТаблицы.УчетнаяЦена, -СтрокаТаблицы.УчетнаяЦена);
СтрокаТЧ.СтавкаНДСВРознице = СтрокаТаблицы.СтавкаНДС;
СтрокаТЧ.СуммаПереоценки = (СтрокаТЧ.ЦенаВРознице-СтрокаТЧ.ЦенаВРозницеСтарая)*СтрокаТЧ.Количество;
ДокументПереоценки.Комментарий = "Изменено при проведении поступления товаров: "+Заголовок;
ДокументПереоценки.Ответственный = глЗначениеПеременной("глТекущийПользователь");
ДокументПереоценки.ЗаполнитьНалоговыеРеквизитыВТабЧастиТовары(Истина);
ДокументПереоценки.Записать(РежимЗаписиДокумента.Проведение);
КонецЕсли;
КонецЦикла;
Показать
Смотрел отладчиком, документ создаётся и заполняется, но не записывается. В случае если уже есть документ, то дописывает в существующий. И да документ дополняется по одной строке. Если строк много, то проводится дольше, но оптимизация это второй шаг. Сама суть что наполняется документ "Переоценка товаров в рознице" нужными строками, но когда выходит из цикла и продолжается проведение, то документа "Переоценка..." нет в базе(или если там был уже созданный, то изменений в нём нет). Пытался вынести в отдельную процедура в Общих модулях и передавать туда на обработку ТаблицуПоТоварам, один раз на этапе теста сработало и документ создало. На этом все. Написал простую внешнюю обработку которая создаёт пустые документы "Переоценка" на заданную дату. Думал прав у пользователя нет или период закрыт. Но пустышки создаются на ура. Конфигурация "Бухгалтерия для Украины" 1.2.44.2, толстый клиент. Платформы пробовал 8.3.9 и 8.3.11.