![]() |
![]() |
|
Суммирование разной номенклатуры при подборе в табличную часть | ☑ | ||
---|---|---|---|---|
0
IBRA
25.09.25
✎
20:40
|
Добрый вечер!
Проблема :1С 8.3, конфиг. УПП 1.3 (1.3.5.1) суммирует разную номенклатуру в одну строку при переносе в табличную часть (операция : Реализация товаров и услуг). Не во всех каталогах,а в определенных и при подьоре с розничными ценами. Есть кто разбирается или сталкивался? |
|||
1
Волшебник
25.09.25
✎
20:51
|
Тут все разбираются. Тут все сталкивались. Опишите свою проблему на нормальном, человеческом языке.
|
|||
2
ОператорПК
25.09.25
✎
20:56
|
(0) сейчас актуальный релиз 1.3.254.1, Ваш как бы немного устарел. Тут только отладчиком смотреть - думаю других вариантов нет.
|
|||
3
IBRA
25.09.25
✎
21:14
|
Описываю проблему:
Есть номенклатура 1,цена 500 руб. Есть номенклатура 2, цена 450 руб. В процессе подбора,при переносе в табличную часть, данные номенклатуры объединяются в 1 строку, меняется количество. Оба элемента разные Это происходит при подборе в розничных ценах. В оптовых ценах все нормально |
|||
4
lEvGl
гуру
25.09.25
✎
21:20
|
это не златан вышел из футбола, а футбол вышел из златана
но это было уже давно, а теперь в него вошла 1с данные номенклатуры объединяются в 1 строку
и что при этом в колонке Номенклатура? |
|||
5
IBRA
25.09.25
✎
21:20
|
Если кто знает в чем проблема,просьба помочь.
(я новичок) |
|||
6
IBRA
25.09.25
✎
21:24
|
lEvGl, имеется ввиду эти 2 элемента становятся одной строкой в табличной части.
То есть, я выбираю товар 1 в кол-ве 1 шт, выбираю товар 2 в кол-ве 1 шт. после перехода в табличную часть у меня одна строка "Товар 1" в кол-ве 2 шт. |
|||
7
lEvGl
гуру
25.09.25
✎
21:39
|
(6) ну косяк в ОбработкаВыбора, а может и не косяк, а фича, смотрите код сами или выкладывайте
|
|||
8
ОператорПК
25.09.25
✎
21:40
|
(5) пригласите поближе к отладчику того кто по опытней.
|
|||
9
IBRA
25.09.25
✎
21:53
|
#Если Клиент Тогда
// Процедура выполняет отключение пользователей от информационной // базы в случае, если был запущен сеанс с параметром "ЗавершитьРаботуПользователей" // Процедура КонтрольРежимаЗавершенияРаботыПользователей() Экспорт ТекущийРежим = ПолучитьБлокировкуУстановкиСоединений(); БлокировкаУстановлена = УправлениеСоединениямиИБ.УстановленаБлокировкаСоединений(); ВремяНачалаБлокировки = ТекущийРежим.Начало; ВремяОкончанияБлокировки = ТекущийРежим.Конец; ИнтервалПредупреждения = УправлениеСоединениямиИБ.ИнтервалОжиданияЗавершенияРаботыПользователей(); ИнтервалЗакрытьСЗапросом = 0; ИнтервалЗакрытьБезЗапроса = - УправлениеСоединениямиИБ.ИнтервалОжиданияЗавершенияРаботыПользователей() / 5; ИнтервалПрекратить = - УправлениеСоединениямиИБ.ИнтервалОжиданияЗавершенияРаботыПользователей() / 2.5; ТекущийМомент = ТекущаяДата(); Если БлокировкаУстановлена Тогда Если ВремяОкончанияБлокировки <> '00010101' И ТекущийМомент > ВремяОкончанияБлокировки Тогда Возврат; КонецЕсли; Если НЕ ЗначениеЗаполнено(ВремяНачалаБлокировки) ИЛИ ВремяНачалаБлокировки - ТекущийМомент <= ИнтервалПрекратить Тогда ПрекратитьРаботуСистемы(Истина); ИначеЕсли ВремяНачалаБлокировки - ТекущийМомент <= ИнтервалЗакрытьБезЗапроса Тогда Сообщение = УправлениеСоединениямиИБ.ИзвлечьСообщениеБлокировки(ТекущийРежим.Сообщение); Предупреждение("Работа системы завершается" + ?(ПустаяСтрока(Сообщение), ".", " " + Сообщение), 30); ЗавершитьРаботуСистемы(Ложь, Истина); ИначеЕсли ВремяНачалаБлокировки - ТекущийМомент <= ИнтервалЗакрытьСЗапросом Тогда Сообщение = УправлениеСоединениямиИБ.ИзвлечьСообщениеБлокировки(ТекущийРежим.Сообщение); Предупреждение("Работа системы завершается" + ?(ПустаяСтрока(Сообщение), ".", " " + Сообщение), 30); ЗавершитьРаботуСистемы(Истина, Истина); ИначеЕсли ВремяНачалаБлокировки - ТекущийМомент <= ИнтервалПредупреждения Тогда Сообщение = УправлениеСоединениямиИБ.ИзвлечьСообщениеБлокировки(ТекущийРежим.Сообщение); Предупреждение("Работа системы будет завершена в " + ВремяНачалаБлокировки + ?(ПустаяСтрока(Сообщение), ".", " " + Сообщение), 30); КонецЕсли; КонецЕсли; КонецПроцедуры // Завершение работы только при условии удачной установки монопольного режима работы // Вызывается, только при запуске системы от имени администратора с параметром запуска "ЗавершитьРаботуПользователей" // Процедура ЗавершитьРаботуПользователей() Экспорт Соединения = ПолучитьСоединенияИнформационнойБазы(); Если Соединения.Количество() = 1 Тогда // Отключены все пользователи, кроме текущего сеанса // В последнюю очередь завершается сеанс, запущенный с параметром "ЗавершитьРаботуПользователей". // Такой порядок отключений необходим для обновления конфигурации с помощью пакетного файла ЗавершитьРаботуСистемы(Ложь); Возврат; КонецЕсли; // Получим текущее значение параметров блокировки ТекущийРежим = ПолучитьБлокировкуУстановкиСоединений(); БлокировкаУстановлена = ТекущийРежим.Установлена; ВремяНачалаБлокировки = ТекущийРежим.Начало; ИнтервалОтключения = - УправлениеСоединениямиИБ.ИнтервалОжиданияЗавершенияРаботыПользователей(); ТекущийМомент = ТекущаяДата(); Если БлокировкаУстановлена И (НЕ ЗначениеЗаполнено(ВремяНачалаБлокировки) ИЛИ ВремяНачалаБлокировки - ТекущийМомент <= ИнтервалОтключения) Тогда // после начала блокировки сеансы всех пользователей должны быть отключены // если этого не произошло пробуем принудительно прервать соединения ОтключитьОбработчикОжидания("ЗавершитьРаботуПользователей"); // Невозможно принудительно отсоединить подключения в файловом режиме работы Если ОпределитьЭтаИнформационнаяБазаФайловая() Тогда УправлениеСоединениямиИБ.РазрешитьРаботуПользователей(); Сообщение = УправлениеСоединениямиИБ.ПолучитьНазванияСоединенийИБ("Не удалось завершить работу пользователей:"); ЗаписьЖурналаРегистрации("Завершение работы пользователей", УровеньЖурналаРегистрации.Предупреждение, , , Сообщение); ЗавершитьРаботуСистемы(Ложь); Возврат; КонецЕсли; ПараметрыАдминистрированияИБ = УправлениеСоединениямиИБ.ПолучитьПараметрыАдминистрированияИБ(); ПараметрыЗапуска = ОбщегоНазначения.РазложитьСтрокуВМассивПодстрок(ПараметрЗапуска,";"); Если ПараметрыЗапуска.Количество() > 1 Тогда ПараметрыАдминистрированияИБ.ИмяАдминистратораИБ = Врег(ПараметрыЗапуска[1]); КонецЕсли; Если ПараметрыЗапуска.Количество() > 2 Тогда ПараметрыАдминистрированияИБ.ПарольАдминистратораИБ = Врег(ПараметрыЗапуска[2]); КонецЕсли; Результат = УправлениеСоединениямиИБ.ОтключитьСоединенияИБ(ПараметрыАдминистрированияИБ); Если Результат Тогда Сообщить("Завершение работы пользователей выполнено успешно.", СтатусСообщения.Информация); ЗавершитьРаботуСистемы(Ложь); Иначе Сообщение = УправлениеСоединениямиИБ.ПолучитьНазванияСоединенийИБ("Не удалось завершить работу пользователей:"); Сообщить(Сообщение, СтатусСообщения.Внимание); ЗаписьЖурналаРегистрации("Завершение работы пользователей", УровеньЖурналаРегистрации.Предупреждение, , , Сообщение); КонецЕсли; КонецЕсли; КонецПроцедуры #КонецЕсли //////////////////////////////////////////////////////////////////////////////// // ПРОВЕРКА ДИНАМИЧЕСКОГО ОБНОВЛЕНИЯ // #Если ТолстыйКлиентОбычноеПриложение Тогда // Проверяет в конфигурации ИБ наличие изменений появившихся после старта сеанса // Процедура ОбработчикОжиданияПроверкиДинамическогоИзмененияИБ() Экспорт // Если в конфигурации после старта текущего сеанса что-то изменилось Если КонфигурацияБазыДанныхИзмененаДинамически() Тогда // Завершим проверку обновления ЗавершитьПроверкуДинамическогоОбновленияИБ(); // Спросим пользователя о его желании перезапустить сеанс ТекстВопроса = "В конфигурацию ИБ внесены изменения." + Символы.ПС + "Для работы с ними рекомендуется перезапустить программу." + Символы.ПС + "Перезапустить?"; РезультатВопроса = Вопрос(ТекстВопроса, РежимДиалогаВопрос.ДаНет); // Если пользователь не хочет перезапускать сеанс Если РезультатВопроса = КодВозвратаДиалога.Нет Тогда // Запустим проверку обновления опять НачатьПроверкуДинамическогоОбновленияИБ(); Возврат; КонецЕсли; // Попробуем перезапустить РаботаСДиалогами.ПерезапуститьСеансРаботыСПрограммой(); КонецЕсли; КонецПроцедуры // Начинает проверку динамического обновления конфигурации ИБ // Процедура НачатьПроверкуДинамическогоОбновленияИБ()Экспорт // проверка дин. обновления конфигурации каждые 20 мин. ПодключитьОбработчикОжидания("ОбработчикОжиданияПроверкиДинамическогоИзмененияИБ", 20 * 60); КонецПроцедуры // Завершает проверку динамического обновления конфигурации ИБ // Процедура ЗавершитьПроверкуДинамическогоОбновленияИБ()Экспорт // Отключим соответствующий обработчик ожидания ОтключитьОбработчикОжидания("ОбработчикОжиданияПроверкиДинамическогоИзмененияИБ"); КонецПроцедуры #КонецЕсли Функция ОпределитьЭтаИнформационнаяБазаФайловая(СтрокаСоединенияСБД = "") Экспорт СтрокаСоединенияСБД = ?(ПустаяСтрока(СтрокаСоединенияСБД), СтрокаСоединенияИнформационнойБазы(), СтрокаСоединенияСБД); // в зависимости от того файловый это вариант БД или нет немного по-разному путь в БД формируется ПозицияПоиска = Найти(Врег(СтрокаСоединенияСБД), "FILE="); Возврат ПозицияПоиска = 1; КонецФункции // Функция предназначена для получения значения по имени переменной // значения берутся либо из КЭШа конфигурации (параметр сеанса "ОбщиеЗначения"), // либо при помощи механизма платформы "повторное использование возвращаемых значений" // // Параметры: // ИмяПеременной - Строка, имя переменной // // Возвращаемое значение: // Произвольное значение // Функция глЗначениеПеременной(ИмяПеременной) Экспорт Возврат РаботаСОбщимиПеременными.ПолучитьЗначениеПеременной(ИмяПеременной); КонецФункции // Процедура установки значения экспортных переменных модуля приложения // // Параметры // ИмяПеременной - строка, содержит имя переменной целиком // ЗначениеПеременной - значение переменной // Процедура глЗначениеПеременнойУстановить(ИмяПеременной, ЗначениеПеременной, ОбновитьКэшНаСервере = Ложь) Экспорт РаботаСОбщимиПеременными.УстановитьЗначениеПеременной(ИмяПеременной, ЗначениеПеременной, ОбновитьКэшНаСервере); КонецПроцедуры |
|||
10
IBRA
25.09.25
✎
21:54
|
я незнаю,правильно я делаю,или нет.
Пытался отладчиком найти этот код |
|||
11
lEvGl
гуру
25.09.25
✎
22:55
|
Если все типовое, то попробую вангануть - у подбираемых номенклатур одна и та же единица хранения остатков. А если нет - то только смотреть код (10) код формы документа РТУ
|
|||
12
IBRA
25.09.25
✎
23:05
|
Да,одна и та же единица хранения остатков
|
|||
13
IBRA
25.09.25
✎
23:07
|
(11) это происходит именно при подборе в розничной цене,а в оптовой цене нет такоц проблемы
|
|||
14
lEvGl
гуру
25.09.25
✎
23:13
|
(12) определили это по кодам этих единиц или по названию?
|
|||
15
IBRA
25.09.25
✎
23:21
|
(14) для каждой номенклатуры назначена своя единица хранения остатков с уникальным кодом
|
|||
16
IBRA
25.09.25
✎
23:22
|
(14) если есть телеграм,мог бы скинуть короткое видео с описанием проблемы.
в отладчике я не разбираюсь,а спросить некого |
|||
17
lEvGl
гуру
25.09.25
✎
23:45
|
об этом останется только запись на форуме, ведь пришла пора прощаться
зы. можете сами посравнивать входные данные - единица, качество, серия, характеристика, склад. По этим полям Типовой код ищет соответствие. Если тип заполнения цен розничный, то еще цена добавляется. Если в Товарах(?) есть строка с такими значениями этих всех полей, какие и для подбираемой номенклатуры, то новую строку не добавит, а увеличит количество в существующей строке. Номенклатура не участвует. |
|||
18
IBRA
25.09.25
✎
23:52
|
Спасибо за помощь.
Догадался в чем проблема и решил на определенной части номенклатуры. Вроде,все правильно работает |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |