Форум программистов, компьютерный форум, киберфорум
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.72/25: Рейтинг темы: голосов - 25, средняя оценка - 4.72
0 / 0 / 0
Регистрация: 08.04.2013
Сообщений: 38
1C 8.x

Создание обработки пакетного ввода документов

12.10.2013, 22:13. Показов 4920. Ответов 14
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Платформа 8.2.
Конфигурация своя.
Режим - неуправляемый.

Необходимо создать обработку для перемещения товаров между складами и организациями, которая бы создавала одновременно расходную и приходную накладную.
Пыталась разобраться в аналогичной обработке в УТ для Украины, но мне сложно.
Извините за быть может глупые вопросы, с объектом "обработка" почти не работала пока.

При нажатие на кнопку "Выполнить" необходимо проверять наличие строк в ТЧ Товары, наличие количества в каждой строке ТЧ Товары и при отсутствии таковых выдавать сообщения пользователю.
В документе в таком случае можно использовать процедуру ПередЗаписью, где есть параметр Отказ.
Как отменить выполнение Обработки в таком случае?

Дальше по принципу типовой конфигурации, необходимо создать НаборЗаписей для РегистровНакопления, записать их, проверить на наличие отрицательных остатков, и в случае их нахождения отменить выполнение обработки, чтобы изменить количество перемещаемых товаров. Насколько я понимаю, необходимо использовать НачатьТранзакцию, ЗафиксироватьТранзакцию, ОтменитьТранзакцию. К моему сожалению, не смогла найти в инете примера, как прописать исключение, чтобы отменить транзакцию. В СП тоже только краткое описание.

Заранее спасибо за помощь.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
12.10.2013, 22:13
Ответы с готовыми решениями:

Создание пакетного файла с использованием списка значений в качестве параметров.
Посмотрите, пожалуйста, задание: Создайте пакетный файл P3 с использованием списка значений в качестве параметров. Количество ...

Модель обработки документов
Здравствуйте. У меня есть задание: В районной налоговой инспекции в отделе по налогообложению физических лиц работает три инспектора. В...

База данных для обработки одинаковых документов
Здравствуйте. Нужна помощь. Есть документы в Екселе, имя каждого - дата, все документы в одной папке на диске. Нужно создать...

14
 Аватар для duk337
2956 / 1768 / 84
Регистрация: 03.11.2011
Сообщений: 8,280
12.10.2013, 23:15
Тут до транзакций, по-моему, туман с алгоритмом. Как можно проверить на наличие остатков только что созданный набор записей? Для РегН, во-первых, созданный набор записей это исключительно движения регистратора. Создавать их надо документом. Документ, возможно, обработкой.
1
0 / 0 / 0
Регистрация: 08.04.2013
Сообщений: 38
13.10.2013, 00:00  [ТС]
По кнопке обработки "Выполнить" я создаю два документа (приход и расход), они создаются с заполнеными реквизитами и табличной частью, но те движения по регистрам, которые находятся в обработках проведения этих документов, не производятся. Я убедилась "методом пробы" . (В обработках проведения этих документов я как раз проверяю на наличие отрицательных остатков.)

Именно поэтому я думала Создавать НаборыЗаписей и вносить данные в регистры в процедуре нажатия кнопки "Выполнить". На наличие отрицательных остатков планировала проверять регистр после добавления НабораЗаписей.

Возможно, я изначально не правильно поняла принцип работы Пакетного ввода. Исправьте меня, если можно. Спасибо.
0
Модератор
Эксперт 1С
 Аватар для Dethmontt
4032 / 2977 / 594
Регистрация: 10.03.2011
Сообщений: 11,701
Записей в блоге: 1
13.10.2013, 00:50
1C
1
ДокументРасход.Записать(РежимЗаписиДокумент.Проведение); //Как раз вызывает обработку проведения документа
1
0 / 0 / 0
Регистрация: 08.04.2013
Сообщений: 38
13.10.2013, 18:03  [ТС]
Спасибо за подсказку. Это решило часть проблем. Но возник следующий вопрос. Если один из документов не может быть проведен в силу наличия отрицательных остатков на складе, как отменить проведение второго? Необходимо быть уверенным, что либо были проведены все документы, либо ни одного.
0
 Аватар для duk337
2956 / 1768 / 84
Регистрация: 03.11.2011
Сообщений: 8,280
13.10.2013, 20:17
Цитата Сообщение от zironka Посмотреть сообщение
Если один из документов не может быть проведен в силу наличия отрицательных остатков на складе
Вот и я про это: как могут возникнуть отрицательные остатки, если Вы создаёте комплементарную пару? Если зависла краснота ДО - Вам так или иначе надо её игнорировать либо компенсировать приходом, добивая красноту перед созданием Расхода. Впрочем, как хотите. Я бы ещё раз продумал алгоритм с точки зрения "откуда ноги растут" у этой процедуры.
0
0 / 0 / 0
Регистрация: 08.04.2013
Сообщений: 38
13.10.2013, 23:05  [ТС]
Мне кажется, я плохо объяснила ход действий.

Попробую объяснить поподробнее особенности конфигурации и национального бизнеса.

Документ Приходная накладная приходует номенклатуру на определенный склад и по определенной организации. Движение записывается в два регистра ТоварыПоСкладам(Измерения: Склад, Номенклатура, ХарактеристикаНоменклатуры; Ресурс: Количество) и ТоварыПоОрганизациям (Измерения: Организация, Номенклатура, ХарактеристикаНоменклатуры; Ресурс: Количество).

Документ ЗаказПокупателя расходует товар со склада без привязке к организации, так как склад для части Организаций общий. Движение записывается в регистр ТоварыПоСкладам(Измерения: Склад, Номенклатура, ХарактеристикаНоменклатуры; Ресурс: Количество). Именно из-за привязки товара к конкретной организации нам не подошла типовая конфигурация, так как ест потребность списывать товар оперативно без каких либо перемещений.

Документ Расходная Накладная не расходует товар со склада но расходует товар по Организации (для документального учета, не каждый заказ у нас оформляется через расходную накладную). Движение записывается в регистр ТоварыПоОрганизациям (Измерения: Организация, Номенклатура, ХарактеристикаНоменклатуры; Ресурс: Количество).

В Обработке Перемещение по складам и организациям необходимо создавать все три документа. При этом в Заказе и РасходнойНакл. Необходим контроль остатка по соответствующему регистру.

Контроль остатка сделан по принципу предложенному в типовой конфигурации. До записи документа в регистре нет отрицательных остатков. Документ проводится, далее проверяется наличие в регистре отрицательных остатков по той номенклатуре, которую только-что провели, и если они есть, то проведение отменяется с просьбой к пользователю изменить количество расходуемого товара так, чтобы отрицательный остаток не появился.

Необходимо сделать так, чтобы при отказе проведения заказа, например, расходная накладная тоже не проводилась и наоборот, чтобы при отказе проведения расходной накладной, заказ тоже не проводилась. Плюс при отказе проведения любого их первых двух документов, также не проводить приходную накладную.

Насколько я поняла, после долгих поисков в интернете, мне необходимо использовать транзакции. Чтобы отменять ее при любом отказе проведения. Но мне, к сожалению, совершенно непонятен синтаксис в данном случае. В СП только краткий комментарий без примера.

Вполне возможно, что есть и другие варианты решения проблемы, только мне при отсутствии опыта их трудно увидеть. Поэтому и обратилась за помощью. Буду очень благодарна за любую подсказку.
0
 Аватар для duk337
2956 / 1768 / 84
Регистрация: 03.11.2011
Сообщений: 8,280
14.10.2013, 00:52
Приход Склад +10, Организация +10.
Заказ Склад -5
Реализация Организация -5
Так?
Что создаёт обработка? Не ясно. Что где должно остаться? Или обработка - это и есть сделка? Почему Приход тоже надо создавать?
0
0 / 0 / 0
Регистрация: 08.04.2013
Сообщений: 38
14.10.2013, 01:08  [ТС]
Цитата Сообщение от duk337 Посмотреть сообщение
Приход Склад +10, Организация +10.
Заказ Склад -5
Реализация Организация -5
Правильно.

Добавлено через 2 минуты
Обработка для внутреннего пользования должна перемещать товары между складами (их два) и собственными организациями (их несколько).
Между складами - для работы, между организациями - для документов. Может быть одновременно и между складами и между организациями одними и теми же документами.

Добавлено через 2 минуты
Обработка должна создавать три документа:
Заказ - расход по складу А;
Расходная накл. - расход по организации1;
Приходная накладная. - приход на организацию2 на склад Б
Не знаю, понятно ли.

Добавлено через 1 минуту
Только в сравнении с Вашим примером, цифры расхода и заказа и прихода должны совпадать: 5 ушло и сразу 5 пришло

Добавлено через 1 минуту
Поскольку документов три, а не два, то простым Если "не проведено" не получается . Вот.
0
 Аватар для duk337
2956 / 1768 / 84
Регистрация: 03.11.2011
Сообщений: 8,280
14.10.2013, 01:51
Поскольку документов три, а не два, то простым Если "не проведено" не получается . Вот.
Это-то не проблема. Я не пойму результат, то есть учётную политику. Хронология создания документов? То, что заказ списывает со склада - это плохо. Он должен плюсовать в свой регистр. А остатки по складам и по организациям должны двигаться только приходом и расходом. Алгоритм модели должен соответствовать реальности - это первая заповедь программиста. Контроль остатков должен быть только в одном месте. Есть же старинная схема, реализованная в 77: первичен склад, поскольку нельзя приходовать "на улицу". организацию можно указывать, можно не указывать. всё в одном регистре, остатки в котором перекидываются на раз с организации на организацию, оставляя склады складами. Т.е. в разрезе складов - порядок, в разрезе организаций - анархия, его мать.
Объясни пошагово, что происходит в реальности: Приход в момент отгрузки или заказа? Или в момент прихода? ну, и т.д.

Добавлено через 2 минуты
по складам - это простое перемещение. А между организациями - это купля-продажа с перемещением прибыли. Все так работают, и под это заточена типовая УТ. Маху дали бухи, и сплошные ахи
0
Модератор
Эксперт 1С
 Аватар для Dethmontt
4032 / 2977 / 594
Регистрация: 10.03.2011
Сообщений: 11,701
Записей в блоге: 1
14.10.2013, 03:10
ну к примеру что то в этом духе...
1C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
НачатьТранзакцию();
Попытка
    ПороцедураПакетногоПроведенияДокументов();
    ЗафиксироватьТранзакцию();
Исключение
    ОтменитьТранзакцию();
КонецПопытки;
 
Процедура ПороцедураПакетногоПроведенияДокументов()
 
   //Не знаю как ты будешь проверять провелся документ или нет
   Документ.Записать(РежимЗаписиДокумент.Проведение);
   Если НЕ Документ.Проведен Тогда
      ВызватьИсключение "Ошибка пакетного проведения, операция отменена!";
   КонецЕсли;
 
КонецПроцедуры
1
0 / 0 / 0
Регистрация: 08.04.2013
Сообщений: 38
14.10.2013, 11:02  [ТС]
duk337,
Цитата Сообщение от duk337 Посмотреть сообщение
Объясни пошагово, что происходит в реальности:
В реальности, менеджеры продают с использованием компьютера. Их несколько. Есть обработка Окно менеджера, которая отображает остаток по складу. Они сами сразу списывают с помощью заказа. Товар позже передается покупателю. Оплата иногда наличными, тогда нет необходимости в документах.

Расходная накладная с контролем по организации нужна для отчетов в налоговую. Чтобы не получилось, что купил ручки наша организация "Вася", а продала их наша организация "Петя", на которую ручки вообще не приходовались. С этой же целью необходима и обработка Перемещение между складами и организациями.

Есть еще второй склад, на котором свои менеджеры и товар туда перекидывается по мере надобности.

Каждый раз при приходе сразу рассчитывать что куда и кому приходовать не удобно, теряется оперативность. Да и не угадаешь.

Структура бызы долго обсуждалась с руководством. Хотят, чтобы было не как "правильно", а как удобно.


Добавлено через 2 минуты
Dethmontt, спасибо за подсказку, буду пробовать
0
 Аватар для duk337
2956 / 1768 / 84
Регистрация: 03.11.2011
Сообщений: 8,280
14.10.2013, 14:05
Цитата Сообщение от zironka Посмотреть сообщение
Оплата иногда наличными, тогда нет необходимости в документах.
. Необходимость в упр.учете есть. Это ПКО, не попадающий в бухню
Цитата Сообщение от zironka Посмотреть сообщение
а как удобно.
странное удобство получилось: в жизни сад, в модели зад. Выпадает событие реальной отгрузки - это удобство?!
1. К заказу, который двигает регистр "резерв", присобачить акцепт отгрузки. Можно просто галочкой в заказе. Акцептовнный заказ снимает (не делает) движения по резерву и списывает со склада по любой организации. Не списанный резерв списывает РН, одновременно списывая штатно со склада по любой организации.
2. При "красной" отгрузке со второго (пустого) склада автоматом генерится док.перемещение. Я бы так сделал.
3. Периодически обработкой утрясать остатки по организациям, создавая пары Расход-Приход в качестве купли-продажи.

.

Добавлено через 1 минуту
купля-продажа, кстати, автоматически генерит перераспределение прибыли между организациями. Собственно, это цель всех российских холдингов.

Добавлено через 2 минуты
Цитата Сообщение от zironka Посмотреть сообщение
при приходе сразу рассчитывать что куда и кому приходовать не удобно
Более того, это невозможно, да и не надо. Приходуется НА СКЛАД. Далее см.п.3
1
0 / 0 / 0
Регистрация: 08.04.2013
Сообщений: 38
14.10.2013, 15:16  [ТС]
Dethmontt,

Ваш код помог.
Цитата Сообщение от Dethmontt Посмотреть сообщение
Если НЕ Документ.Проведен Тогда ВызватьИсключение "Ошибка пакетного проведения, операция отменена!"; КонецЕсли;
Только эта проверка оказалась не нужна, так как при отказе в проведении, транзакция сразу отменяется, не доходя по коду до этой проверки.
Спасибо.

Добавлено через 4 минуты
duk337,

Пока обработку я закончила, так как было задумано заранее.

Но все же спасибо за совет и детальное объяснение. Так конечно намного логичнее и правильнее. Попробую предложит это шефам. Возможно согласятся.

Тему можно считать закрытой.
0
Модератор
Эксперт 1С
 Аватар для Dethmontt
4032 / 2977 / 594
Регистрация: 10.03.2011
Сообщений: 11,701
Записей в блоге: 1
14.10.2013, 21:40
Цитата Сообщение от zironka Посмотреть сообщение
Только эта проверка оказалась не нужна, так как при отказе в проведении, транзакция сразу отменяется, не доходя по коду до этой проверки.
Спасибо.
Так я вам специально это место пометил комментарием... Откуда мне знать принимает ли параметр отказ = истина в обработке проведения документа...
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
14.10.2013, 21:40
Помогаю со студенческими работами здесь

Создание исполняемого файла на основе пакетного файла и копируемых им файлов
Доброго времени суток. Батник копирует файлы из папки Test в папку bin в текущем каталоге. Мне нужно сделать это в одном исполняемом файле,...

Нужно написать программу для ввода ланных и печати документов
Всем привет) Хочу написать программу для windows. Она простая и поможет мне в работе. Нужно следующее: 1. В одной форме сдлеать строки...

Модули ввода и обработки массива
Возникла проблема, прошу помочь)) Задание - главная программа с меню 1.ввод массива 2.обработка массива. через модули подцеплены...

Фильтр ввода без обработки событий в code behind
Нужно сделать фильтр ввода. В поле name - ввод только латиницей, в поле - только цифр, ввод букв игнорится. Hе обрабатывать события в...

Написать программу для ввода, обработки и печати матрицы
Для матрицы G(m, n), 1<(m, n)<10, найти значение минимального элемента. Переставить столбцы по убыванию количества положительных элементов...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Новые блоги и статьи
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru