|
Вопрос по КД2 | ☑ | ||
---|---|---|---|---|
0
Цыпленок
08.08.12
✎
16:28
|
Имею две практически идентичные семерочные конфигурации (обе типовые бухгалтерии чуть модифицированные). Создаю между ними новое правило обмена (автоматически, но в правилах выгрузки у меня только расходная накладная, ПКО и РКО). Требуется при переносе сделать так, чтобы
1) из исходной не выгружались (или в приемник не загружались, неважно) расходные накладные, у которых в табличной части товар двух определенных наименований (предположим, это тара, которую в приемнике видеть не хотят) - как это сделатЬ, я не понял. Если автоматическим правилом пользоваться, то при открытии обработки выгрузки и загрузки я не могу задать условие, т.к. в открывающихся условиях у меня только реквизиты шапки доступны 2) При загрузке у меня если в расходной накладной есть реквизит определенного вида, то должен заменяться контрагент на определенного вида. 3) В ПКО тоже если корреспондирующий счет к примеру 62.1 то должны проставляться определенные реквизиты для управленческого учета. Я так понял это надо делать с помощью обработчиков, плюс потом заменять полученный код в обработках выгрузки и загрузки, иначе эти обработчики работать не будут. Вот только в восьмерке я мягко говоря не силен, и не пойму как обработчик написать и где. Подскажите пожалуйста, какие обработчики и где написать чтобы сделать требуемое. |
|||
1
takefive
08.08.12
✎
17:01
|
1.В ПКС "ТабличнаяЧасть" включи флаг "Получить из входящих данных". Входящие данные сформируй в ПВД
|
|||
2
Йохохо
08.08.12
✎
17:22
|
1) ПКГС ТЧ ПередВыгрузкой - F2 =)
Если Алгоритмы.Плохая(ОбъектКоллекции.Номенклатура) = 1 Тогда Отказ = Истина; // в 7.7?) КонецЕсли; 2)3) таки 7 или 8? |
|||
3
andrewks
08.08.12
✎
17:43
|
"от только в восьмерке я мягко говоря не силен, и не пойму как обработчик написать и где"
8-ка тут ни при чём, обработчики тебе нужно писать на языке 7.7 |
|||
4
Абыр
08.08.12
✎
17:57
|
1) не надо выгружать весь документ, где встречаются определенные товары, или только строки с этими товарами? если весь док, то в обработчике "Перед выгрузкой" ПКО документа проверять табличную часть источника и ставить Отказ = 1, если нашлись ненужные товары. если просто строки не переносить, то в обработчике "Перед выгрузкой" ПКГС табличной части проверять ОбъектКоллекции и также ставить Отказ = 1
2) и 3) делаешь упрощенные правила для контрагента и прочих реквизитов, которые надо подставить (например, с одним ПКС "код" и поиском по нему). в документах у соответствующих ПКС в обработчике "Перед выгрузкой" проверяешь источник на нужное условие, и при выполнении его меняешь передаваемое значение и ИмяПКО на упрощенное |
|||
5
Абыр
08.08.12
✎
17:57
|
ну и (3) прав, 8ка тут совсем не нужна
|
|||
6
Цыпленок
09.08.12
✎
09:48
|
Спасибо ответившим, сейчас буду пробовать.
|
|||
7
Цыпленок
09.08.12
✎
12:47
|
(1) Флаг включаю, но в ПВД реквизиты табличной части не появляются.
(2) Если Алгоритмы.Плохая(ОбъектКоллекции.Номенклатура) = 1 Тогда Отказ = Истина; // в 7.7?) КонецЕсли; Не понял как писать код. (нужно предположим убрать накладые, где товары Гофро-тара и Тара оборотная) Тем более, я так понял, документы все равно будут переноситься, только без этих товаров. А мне надо чтобы вообще не переносились. (4) >>в обработчике "Перед выгрузкой" ПКО документа проверять табличную часть источника и ставить Отказ = 1, если нашлись ненужные товары. Вот это и нужно, только как это написать в обработчике? |
|||
8
Йохохо
09.08.12
✎
12:58
|
(7) этот код вырезал бы строки ТЧ
Так и написать =) Найди глобальный обработчик ПередВыгрузкой, проверяй тип документа и условие ТЧ |
|||
9
Цыпленок
09.08.12
✎
13:39
|
(8) Обработчик "перед выгрузкой" документа Расходная накладная
Обработчик Если (Объект.Товар.Код="С00002272") Или(Объект.Товар.Код="000001209") Тогда Отказ = 1; КонецЕсли; Так правильно? |
|||
10
Цыпленок
09.08.12
✎
13:42
|
хотя не, так не работает. Ругается объект не определен.
|
|||
11
Абыр
10.08.12
✎
00:11
|
(10)
Источник.ВыбратьСтроки(); Пока Источник.ПолучитьСтроку() = 1 Цикл Если (Источник.Товар.Код="С00002272") Или (Источник.Товар.Код="000001209") Тогда Отказ = 1; Прервать; КонецЕсли; КонецЦикла; |
|||
12
Цыпленок
10.08.12
✎
08:42
|
(11) Спасибо, я уже отладчиком посмотрел, что попадает в Источник, примерно такой же код и написал, только проверил на тип документа. ) Но все равно спасибо. )
|
|||
13
Цыпленок
10.08.12
✎
14:10
|
(4) С невыгрузкой расходных накладных с "неправильным" товаром, разобрался с вашей помощью. Спасибо. Теперь по пункту 2 и 3. Че то ни фига не понял. Что за упрощенное правило?
>>2) и 3) делаешь упрощенные правила для контрагента и прочих реквизитов, которые надо подставить (например, с одним ПКС "код" и поиском по нему). в документах у соответствующих ПКС в обработчике "Перед выгрузкой" проверяешь источник на нужное условие, и при выполнении его меняешь передаваемое значение и ИмяПКО на упрощенное |
|||
14
Йохохо
10.08.12
✎
14:18
|
мб тебя не так поняли, это путь, если править на стороне выгрузки
если ты хочешь дозаполнять - просто пиши код в ПослеЗагрузки, только там уже Объект |
|||
15
Цыпленок
10.08.12
✎
14:24
|
Уточню. Предположим в перенесенной РН есть реквизит Основание, тип перечисление. Если выбран тип перечисления Паек, то нужно заменять контрагента на "пайки" - бухам так надо, чтобы видеть пайковые документы. Вот чтобы каждый раз после переноса не производить такую замену, и хочу чтобы сразу контрагент Паек выгружался или загружался при обмене. Тоже касается и ПКО. Если выбран счет 62.1 и у документа определенный префикс, то должны заполняться управленческие счета забалансовые определенные. Тоже хотелось бы это делать при обмене сразу а не обработкой потом замены делать.
|
|||
16
Йохохо
10.08.12
✎
14:36
|
в ПКО дока в ПКС Контрагент
Если ЭтоВПайки() = 1 Тогда ИмяПКО = Контрагенты_Кратко; Значение = Новый Структура; Значение.Вставить(Наименование, "КонтрагентПаёк"); Значение.Вставить("Код", ""); Иначе ИмяПКО = Контрагенты; КонецЕсли; Создать новый ПКО Контрагент_Кратко, в нем выбрать в синхру только 2 поля и поставить поиск по Наименованию. Если хочешь по ИНН, то три поля только под 7.7 переделай) |
|||
17
Цыпленок
10.08.12
✎
14:37
|
Хотя разумеется такая задача решается и обычным роботом в процедуре обработкаОжидания который будет производить такую заману или просто отдельной обработкой. Просто хотелось бы научиться такую замену делать с помощью КД2.
|
|||
18
Цыпленок
10.08.12
✎
14:40
|
(16) Ща попробую, спасибо.
|
|||
19
Йохохо
10.08.12
✎
14:55
|
кавычек категорически не хватает )
|
|||
20
Цыпленок
10.08.12
✎
15:42
|
новый ПКО Контрагент_Кратко я создал, синхронизация по коду и наименованию, галка искать по наименованию стоит. Открываю в ПКО РасходнойНакладной в ПКС Контрагент обработчик перед выгрузкой. А вот этот код я не очень понимаю, вроде переписал частично на семерку.
Если Источник.Основание=ОснованияРасходныхДокументов.Паек Тогда ИмяПКО = Контрагенты_Кратко; Значение = Новый Структура; //??? Значение.Вставить(Наименование, "Пайки Вагончик"); //??? Значение.Вставить("С010767", ""); //??? Иначе ИмяПКО = Контрагенты; КонецЕсли; |
|||
21
Йохохо
10.08.12
✎
15:49
|
Значение = СоздатьОбъект("СписокЗначений");
Значение.Установить("Наименование", "Пайки Вагончик"); Значение.Установить("Код", "С010767"); |
|||
22
Цыпленок
10.08.12
✎
16:11
|
Упс, проблема. В исходной конфе этот контрагент называется Пайки, в приемной Пайки Вагончик. Код такой же. Тогда получается лучше поиск по коду поставить и пусть выгружает по коду, без названия.
Окончательный код я так понимаю такой Если Источник.Основание=ОснованияРасходныхДокументов.Паек Тогда ИмяПКО = Контрагенты_Кратко; Значение = СоздатьОбъект("СписокЗначений"); //Значение.Установить("Наименование", "Пайки Вагончик"); Значение.Установить("Код", "С010767"); Иначе ИмяПКО = Контрагенты; КонецЕсли; |
|||
23
Цыпленок
10.08.12
✎
16:24
|
Не проходит синтакс контроль в модуле выгрузки
ИмяПКО = Контрагенты_Кратко<<?>>; {D:\КОНВЕРТАЦИЯДАННЫХ\1C\CONVERSION\2_1_6_1\V77EXP.ERT(121)}: Переменная не определена (Контрагенты_Кратко) ИмяПКО = Контрагенты<<?>>; {D:\КОНВЕРТАЦИЯДАННЫХ\1C\CONVERSION\2_1_6_1\V77EXP.ERT(126)}: Переменная не определена (Контрагенты) При проверке модуля обнаружены синтаксические ошибки! |
|||
24
Цыпленок
10.08.12
✎
16:33
|
Окончательный код пока
Если Источник.Основание=Перечисление.ОснованияРасходныхДокументов.Паек Тогда ИмяПКО = Контрагенты_Кратко; Значение = СоздатьОбъект("СписокЗначений"); //Значение.Установить("Наименование", "Пайки Вагончик"); Значение.Установить("Код", "С010767"); Иначе ИмяПКО = Контрагенты; КонецЕсли; |
|||
25
Цыпленок
10.08.12
✎
16:34
|
Почему то ругается что Контрагенты_Кратко и Контрагенты не определены, хотя есть такие ПКО
|
|||
26
Йохохо
10.08.12
✎
16:41
|
=) у меня незавоз кавычек
ИмяПКО = "Контрагенты_Кратко"; |
|||
27
Цыпленок
10.08.12
✎
16:46
|
йопт. ) щас проверю.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |