1.3.1.136: ввод остатков делится по родителю номенклатуры.
Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -4,6 +4,14 @@
|
|||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
|
## 1.3.1.136 (2026-10-14)
|
||||||
|
|
||||||
|
### Ввод остатков: документ на группу-родителя номенклатуры
|
||||||
|
|
||||||
|
- Собственные товары: отдельный документ на склад и родителя номенклатуры.
|
||||||
|
- Комиссия 2.5: отдельный документ на партнёра, соглашение, договор и родителя номенклатуры.
|
||||||
|
- В комментарии документа есть имя этой группы. Номенклатура без родителя собирается в группу «без группы».
|
||||||
|
|
||||||
## 1.3.1.135 (2026-10-14)
|
## 1.3.1.135 (2026-10-14)
|
||||||
|
|
||||||
### Ввод остатков: серия по UUID со сроком 01.01.2001
|
### Ввод остатков: серия по UUID со сроком 01.01.2001
|
||||||
|
|||||||
@@ -62,7 +62,7 @@
|
|||||||
<xr:Item xsi:type="xr:MDObjectRef">Role.РК_ОсновнаяРоль</xr:Item>
|
<xr:Item xsi:type="xr:MDObjectRef">Role.РК_ОсновнаяРоль</xr:Item>
|
||||||
</DefaultRoles>
|
</DefaultRoles>
|
||||||
<Vendor/>
|
<Vendor/>
|
||||||
<Version>1.3.1.135</Version>
|
<Version>1.3.1.136</Version>
|
||||||
<DefaultStyle/>
|
<DefaultStyle/>
|
||||||
<DefaultLanguage>Language.Русский</DefaultLanguage>
|
<DefaultLanguage>Language.Русский</DefaultLanguage>
|
||||||
<BriefInformation/>
|
<BriefInformation/>
|
||||||
|
|||||||
@@ -471,8 +471,9 @@
|
|||||||
|
|
||||||
СтрокиПоСкладу = СгруппироватьСопоставленныеСтрокиПоСкладу();
|
СтрокиПоСкладу = СгруппироватьСопоставленныеСтрокиПоСкладу();
|
||||||
СтрокиКомиссии = СгруппироватьСопоставленныеСтрокиКомиссии();
|
СтрокиКомиссии = СгруппироватьСопоставленныеСтрокиКомиссии();
|
||||||
ДобавитьСтрокуПротокола(Результат, "Групп own (складов): " + Формат(СтрокиПоСкладу.Количество(), "ЧН=0; ЧГ=0")
|
ДобавитьСтрокуПротокола(Результат, "Групп own (склад и родитель номенклатуры): "
|
||||||
+ "; групп comm: " + Формат(СтрокиКомиссии.Количество(), "ЧН=0; ЧГ=0"));
|
+ Формат(СтрокиПоСкладу.Количество(), "ЧН=0; ЧГ=0")
|
||||||
|
+ "; групп comm (партнёр и родитель): " + Формат(СтрокиКомиссии.Количество(), "ЧН=0; ЧГ=0"));
|
||||||
Если СтрокиПоСкладу.Количество() = 0 И СтрокиКомиссии.Количество() = 0 Тогда
|
Если СтрокиПоСкладу.Количество() = 0 И СтрокиКомиссии.Количество() = 0 Тогда
|
||||||
ДобавитьСтрокуПротокола(Результат,
|
ДобавитьСтрокуПротокола(Результат,
|
||||||
"[WARN] Нет сопоставленных строк с количеством > 0 — документы не создаются. Сначала «Сопоставить».");
|
"[WARN] Нет сопоставленных строк с количеством > 0 — документы не создаются. Сначала «Сопоставить».");
|
||||||
@@ -501,20 +502,22 @@
|
|||||||
|
|
||||||
Для Каждого ЭлементСклада Из СтрокиПоСкладу Цикл
|
Для Каждого ЭлементСклада Из СтрокиПоСкладу Цикл
|
||||||
|
|
||||||
СкладДок = ЭлементСклада.Ключ;
|
|
||||||
СтрокиСклада = ЭлементСклада.Значение;
|
СтрокиСклада = ЭлементСклада.Значение;
|
||||||
Если СтрокиСклада.Количество() = 0 Тогда
|
Если СтрокиСклада.Количество() = 0 Тогда
|
||||||
Продолжить;
|
Продолжить;
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
|
|
||||||
|
СкладДок = СтрокиСклада[0].Склад;
|
||||||
|
КомментарийГруппы = КомментарийДокументаСобственных(ТекстТега, СкладДок, СтрокиСклада);
|
||||||
Контекст = "own / склад " + СокрЛП(Строка(СкладДок))
|
Контекст = "own / склад " + СокрЛП(Строка(СкладДок))
|
||||||
|
+ " / группа " + ИмяГруппыРодителя(СтрокиСклада[0].Номенклатура)
|
||||||
+ " / строк " + Формат(СтрокиСклада.Количество(), "ЧН=0; ЧГ=0");
|
+ " / строк " + Формат(СтрокиСклада.Количество(), "ЧН=0; ЧГ=0");
|
||||||
Попытка
|
Попытка
|
||||||
Если РежимТест Тогда
|
Если РежимТест Тогда
|
||||||
Результат.СозданоДокументов = Результат.СозданоДокументов + 1;
|
Результат.СозданоДокументов = Результат.СозданоДокументов + 1;
|
||||||
Результат.СтрокВДокументах = Результат.СтрокВДокументах + СтрокиСклада.Количество();
|
Результат.СтрокВДокументах = Результат.СтрокВДокументах + СтрокиСклада.Количество();
|
||||||
ДобавитьВСозданныеДокументы(Неопределено, "Собственные", СкладДок,
|
ДобавитьВСозданныеДокументы(Неопределено, "Собственные", СкладДок,
|
||||||
Неопределено, Неопределено, СтрокиСклада, ТекстТега + ", склад " + СокрЛП(Строка(СкладДок)), Истина, Результат);
|
Неопределено, Неопределено, СтрокиСклада, КомментарийГруппы, Истина, Результат);
|
||||||
ДобавитьСтрокуПротокола(Результат, "[TEST] " + Контекст);
|
ДобавитьСтрокуПротокола(Результат, "[TEST] " + Контекст);
|
||||||
ДобавитьСтрокиCSVДокументаИзВходящих(СтрокиCSVДокументов, "own", Неопределено, СкладДок,
|
ДобавитьСтрокиCSVДокументаИзВходящих(СтрокиCSVДокументов, "own", Неопределено, СкладДок,
|
||||||
Неопределено, Неопределено, Неопределено, СтрокиСклада, Истина);
|
Неопределено, Неопределено, Неопределено, СтрокиСклада, Истина);
|
||||||
@@ -527,7 +530,7 @@
|
|||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
|
|
||||||
ДобавитьСтрокуПротокола(Результат, "[FILL] " + Контекст);
|
ДобавитьСтрокуПротокола(Результат, "[FILL] " + Контекст);
|
||||||
Док = СоздатьДокументПоСкладу(СкладДок, СтрокиСклада, ТекстТега, ПартияВвода);
|
Док = СоздатьДокументПоСкладу(СкладДок, СтрокиСклада, КомментарийГруппы, ПартияВвода);
|
||||||
Если ДокументВводаСозданУспешно(Док) Тогда
|
Если ДокументВводаСозданУспешно(Док) Тогда
|
||||||
Результат.СозданоДокументов = Результат.СозданоДокументов + 1;
|
Результат.СозданоДокументов = Результат.СозданоДокументов + 1;
|
||||||
Результат.СтрокВДокументах = Результат.СтрокВДокументах + Док.Товары.Количество();
|
Результат.СтрокВДокументах = Результат.СтрокВДокументах + Док.Товары.Количество();
|
||||||
@@ -560,9 +563,11 @@
|
|||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
|
|
||||||
Первая = СтрокиГруппы[0];
|
Первая = СтрокиГруппы[0];
|
||||||
|
КомментарийГруппы = КомментарийДокументаКомиссии(ТекстТега, СтрокиГруппы);
|
||||||
Контекст = "comm / партнёр " + СокрЛП(Строка(Первая.Партнер))
|
Контекст = "comm / партнёр " + СокрЛП(Строка(Первая.Партнер))
|
||||||
+ " / соглашение " + СокрЛП(Строка(Первая.Соглашение))
|
+ " / соглашение " + СокрЛП(Строка(Первая.Соглашение))
|
||||||
+ " / договор " + СокрЛП(Строка(Первая.Договор))
|
+ " / договор " + СокрЛП(Строка(Первая.Договор))
|
||||||
|
+ " / группа " + ИмяГруппыРодителя(Первая.Номенклатура)
|
||||||
+ " / строк " + Формат(СтрокиГруппы.Количество(), "ЧН=0; ЧГ=0");
|
+ " / строк " + Формат(СтрокиГруппы.Количество(), "ЧН=0; ЧГ=0");
|
||||||
Попытка
|
Попытка
|
||||||
Если РежимТест Тогда
|
Если РежимТест Тогда
|
||||||
@@ -570,7 +575,7 @@
|
|||||||
Результат.СтрокКомиссии = Результат.СтрокКомиссии + СтрокиГруппы.Количество();
|
Результат.СтрокКомиссии = Результат.СтрокКомиссии + СтрокиГруппы.Количество();
|
||||||
ДобавитьВСозданныеДокументы(Неопределено, "Комиссия 2.5", Неопределено,
|
ДобавитьВСозданныеДокументы(Неопределено, "Комиссия 2.5", Неопределено,
|
||||||
Первая.Соглашение, Первая.Партнер, СтрокиГруппы,
|
Первая.Соглашение, Первая.Партнер, СтрокиГруппы,
|
||||||
ТекстТега + ", комиссия 2.5, " + СокрЛП(Строка(Первая.Партнер)), Истина, Результат);
|
КомментарийГруппы, Истина, Результат);
|
||||||
ДобавитьСтрокуПротокола(Результат, "[TEST] " + Контекст);
|
ДобавитьСтрокуПротокола(Результат, "[TEST] " + Контекст);
|
||||||
ДобавитьСтрокиCSVДокументаИзВходящих(СтрокиCSVДокументов, "comm", Неопределено, Неопределено,
|
ДобавитьСтрокиCSVДокументаИзВходящих(СтрокиCSVДокументов, "comm", Неопределено, Неопределено,
|
||||||
Первая.Партнер, Первая.Соглашение, Первая.Договор, СтрокиГруппы, Истина);
|
Первая.Партнер, Первая.Соглашение, Первая.Договор, СтрокиГруппы, Истина);
|
||||||
@@ -583,7 +588,7 @@
|
|||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
|
|
||||||
ДобавитьСтрокуПротокола(Результат, "[FILL] " + Контекст);
|
ДобавитьСтрокуПротокола(Результат, "[FILL] " + Контекст);
|
||||||
Док = СоздатьДокументКомиссии(СтрокиГруппы, ТекстТега, ПартияВвода);
|
Док = СоздатьДокументКомиссии(СтрокиГруппы, КомментарийГруппы, ПартияВвода);
|
||||||
Если ДокументВводаСозданУспешно(Док) Тогда
|
Если ДокументВводаСозданУспешно(Док) Тогда
|
||||||
Результат.СозданоДокументовКомиссии = Результат.СозданоДокументовКомиссии + 1;
|
Результат.СозданоДокументовКомиссии = Результат.СозданоДокументовКомиссии + 1;
|
||||||
Результат.СтрокКомиссии = Результат.СтрокКомиссии + Док.Товары.Количество();
|
Результат.СтрокКомиссии = Результат.СтрокКомиссии + Док.Товары.Количество();
|
||||||
@@ -1029,6 +1034,53 @@
|
|||||||
|
|
||||||
КонецФункции
|
КонецФункции
|
||||||
|
|
||||||
|
Функция ГруппаРодительНоменклатуры(Номенклатура)
|
||||||
|
|
||||||
|
Если Не ЗначениеЗаполнено(Номенклатура) Тогда
|
||||||
|
Возврат Справочники.Номенклатура.ПустаяСсылка();
|
||||||
|
КонецЕсли;
|
||||||
|
Возврат ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Номенклатура, "Родитель");
|
||||||
|
|
||||||
|
КонецФункции
|
||||||
|
|
||||||
|
Функция КлючГруппыРодителя(Номенклатура)
|
||||||
|
|
||||||
|
Группа = ГруппаРодительНоменклатуры(Номенклатура);
|
||||||
|
Если Не ЗначениеЗаполнено(Группа) Тогда
|
||||||
|
Возврат "без группы";
|
||||||
|
КонецЕсли;
|
||||||
|
Возврат Строка(Группа.УникальныйИдентификатор());
|
||||||
|
|
||||||
|
КонецФункции
|
||||||
|
|
||||||
|
Функция ИмяГруппыРодителя(Номенклатура)
|
||||||
|
|
||||||
|
Группа = ГруппаРодительНоменклатуры(Номенклатура);
|
||||||
|
Если Не ЗначениеЗаполнено(Группа) Тогда
|
||||||
|
Возврат "без группы";
|
||||||
|
КонецЕсли;
|
||||||
|
Возврат СокрЛП(Строка(Группа));
|
||||||
|
|
||||||
|
КонецФункции
|
||||||
|
|
||||||
|
Функция КомментарийДокументаСобственных(ТекстТега, СкладДок, СтрокиСклада)
|
||||||
|
|
||||||
|
ИмяГруппы = "без группы";
|
||||||
|
Если СтрокиСклада.Количество() > 0 Тогда
|
||||||
|
ИмяГруппы = ИмяГруппыРодителя(СтрокиСклада[0].Номенклатура);
|
||||||
|
КонецЕсли;
|
||||||
|
Возврат ТекстТега + ", склад " + СокрЛП(Строка(СкладДок)) + ", группа " + ИмяГруппы;
|
||||||
|
|
||||||
|
КонецФункции
|
||||||
|
|
||||||
|
Функция КомментарийДокументаКомиссии(ТекстТега, СтрокиГруппы)
|
||||||
|
|
||||||
|
Первая = СтрокиГруппы[0];
|
||||||
|
Возврат ТекстТега + ", комиссия 2.5, " + СокрЛП(Строка(Первая.Партнер))
|
||||||
|
+ ", группа " + ИмяГруппыРодителя(Первая.Номенклатура);
|
||||||
|
|
||||||
|
КонецФункции
|
||||||
|
|
||||||
Функция СгруппироватьСопоставленныеСтрокиПоСкладу()
|
Функция СгруппироватьСопоставленныеСтрокиПоСкладу()
|
||||||
|
|
||||||
Группы = Новый Соответствие;
|
Группы = Новый Соответствие;
|
||||||
@@ -1042,28 +1094,15 @@
|
|||||||
Если СтрТ.Количество <= 0 Тогда
|
Если СтрТ.Количество <= 0 Тогда
|
||||||
Продолжить;
|
Продолжить;
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
КлючСклада = Строка(СтрТ.Склад.УникальныйИдентификатор());
|
Ключ = Строка(СтрТ.Склад.УникальныйИдентификатор()) + "|" + КлючГруппыРодителя(СтрТ.Номенклатура);
|
||||||
СтрокиСклада = Группы.Получить(КлючСклада);
|
СтрокиСклада = Группы.Получить(Ключ);
|
||||||
Если СтрокиСклада = Неопределено Тогда
|
Если СтрокиСклада = Неопределено Тогда
|
||||||
СтрокиСклада = Новый Массив;
|
СтрокиСклада = Новый Массив;
|
||||||
Группы.Вставить(КлючСклада, СтрокиСклада);
|
Группы.Вставить(Ключ, СтрокиСклада);
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
СтрокиСклада.Добавить(СтрТ);
|
СтрокиСклада.Добавить(СтрТ);
|
||||||
КонецЦикла;
|
КонецЦикла;
|
||||||
|
Возврат Группы;
|
||||||
// Переключить ключи на ссылки складов для удобства обхода.
|
|
||||||
Результат = Новый Соответствие;
|
|
||||||
Для Каждого СтрТ Из ВходящиеСобственныеТовары Цикл
|
|
||||||
Если Не СтрТ.Сопоставлено Или Не ЗначениеЗаполнено(СтрТ.Склад) Тогда
|
|
||||||
Продолжить;
|
|
||||||
КонецЕсли;
|
|
||||||
КлючСклада = Строка(СтрТ.Склад.УникальныйИдентификатор());
|
|
||||||
СтрокиСклада = Группы.Получить(КлючСклада);
|
|
||||||
Если СтрокиСклада <> Неопределено И Результат.Получить(СтрТ.Склад) = Неопределено Тогда
|
|
||||||
Результат.Вставить(СтрТ.Склад, СтрокиСклада);
|
|
||||||
КонецЕсли;
|
|
||||||
КонецЦикла;
|
|
||||||
Возврат Результат;
|
|
||||||
|
|
||||||
КонецФункции
|
КонецФункции
|
||||||
|
|
||||||
@@ -1082,7 +1121,8 @@
|
|||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
КлючГруппы = Строка(СтрТ.Соглашение.УникальныйИдентификатор())
|
КлючГруппы = Строка(СтрТ.Соглашение.УникальныйИдентификатор())
|
||||||
+ "|" + Строка(СтрТ.Партнер.УникальныйИдентификатор())
|
+ "|" + Строка(СтрТ.Партнер.УникальныйИдентификатор())
|
||||||
+ "|" + Строка(СтрТ.Договор.УникальныйИдентификатор());
|
+ "|" + Строка(СтрТ.Договор.УникальныйИдентификатор())
|
||||||
|
+ "|" + КлючГруппыРодителя(СтрТ.Номенклатура);
|
||||||
СтрокиГруппы = Группы.Получить(КлючГруппы);
|
СтрокиГруппы = Группы.Получить(КлючГруппы);
|
||||||
Если СтрокиГруппы = Неопределено Тогда
|
Если СтрокиГруппы = Неопределено Тогда
|
||||||
СтрокиГруппы = Новый Массив;
|
СтрокиГруппы = Новый Массив;
|
||||||
@@ -1127,14 +1167,14 @@
|
|||||||
|
|
||||||
КонецФункции
|
КонецФункции
|
||||||
|
|
||||||
Функция СоздатьДокументПоСкладу(СкладДок, СтрокиСклада, ТекстТега, ПартияВвода)
|
Функция СоздатьДокументПоСкладу(СкладДок, СтрокиСклада, Комментарий, ПартияВвода)
|
||||||
|
|
||||||
Док = Документы.ВводОстатковТоваров.СоздатьДокумент();
|
Док = Документы.ВводОстатковТоваров.СоздатьДокумент();
|
||||||
Док.Дата = ДатаДокументовВвода;
|
Док.Дата = ДатаДокументовВвода;
|
||||||
Док.Организация = Организация;
|
Док.Организация = Организация;
|
||||||
Док.Склад = СкладДок;
|
Док.Склад = СкладДок;
|
||||||
Док.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ВводОстатковСобственныхТоваров;
|
Док.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ВводОстатковСобственныхТоваров;
|
||||||
Док.Комментарий = ТекстТега + ", склад " + СокрЛП(Строка(СкладДок));
|
Док.Комментарий = Комментарий;
|
||||||
Док.Партия = ПартияВвода;
|
Док.Партия = ПартияВвода;
|
||||||
Док.РК_НеПересчитыватьСуммуРеглПоКурсу = Истина;
|
Док.РК_НеПересчитыватьСуммуРеглПоКурсу = Истина;
|
||||||
Док.ОтражатьВОперативномУчете = Истина;
|
Док.ОтражатьВОперативномУчете = Истина;
|
||||||
@@ -1195,7 +1235,7 @@
|
|||||||
|
|
||||||
КонецФункции
|
КонецФункции
|
||||||
|
|
||||||
Функция СоздатьДокументКомиссии(СтрокиГруппы, ТекстТега, ПартияВвода)
|
Функция СоздатьДокументКомиссии(СтрокиГруппы, Комментарий, ПартияВвода)
|
||||||
|
|
||||||
Первая = СтрокиГруппы[0];
|
Первая = СтрокиГруппы[0];
|
||||||
ДоговорШапки = Первая.Договор;
|
ДоговорШапки = Первая.Договор;
|
||||||
@@ -1215,7 +1255,7 @@
|
|||||||
Док.Партнер = Первая.Партнер;
|
Док.Партнер = Первая.Партнер;
|
||||||
Док.Контрагент = Первая.Контрагент;
|
Док.Контрагент = Первая.Контрагент;
|
||||||
Док.Договор = ДоговорШапки;
|
Док.Договор = ДоговорШапки;
|
||||||
Док.Комментарий = ТекстТега + ", комиссия 2.5, " + СокрЛП(Строка(Первая.Партнер));
|
Док.Комментарий = Комментарий;
|
||||||
Док.Партия = ПартияВвода;
|
Док.Партия = ПартияВвода;
|
||||||
Док.РК_НеПересчитыватьСуммуРеглПоКурсу = Истина;
|
Док.РК_НеПересчитыватьСуммуРеглПоКурсу = Истина;
|
||||||
Док.ОтражатьВОперативномУчете = Истина;
|
Док.ОтражатьВОперативномУчете = Истина;
|
||||||
|
|||||||
Reference in New Issue
Block a user