Отправляет email-рассылки с помощью сервиса Sendsay

RFpro.ru: 1С для программиста

  Все выпуски  

RusFAQ.ru: 1С для программиста


РАССЫЛКИ ПОРТАЛА RUSFAQ.RU

/ КОМПЬЮТЕРЫ И ПО / Языки программирования / 1С для программиста

Выпуск № 592
от 05.09.2007, 04:35

Администратор:Калашников О.А.
В рассылке:Подписчиков: 410, Экспертов: 55
В номере:Вопросов: 1, Ответов: 4


Вопрос № 100252: Здравствуйте, остро нуждаюсь в помощи. Документы загружаются в базу из идентичной это Бухгалтерия 7.7 4.55 релиз, но сильно до меня переписанный Сначала все загружается в таблицу ТЗ. Справочники Контрагентов и Договоров идентичны.<...

Вопрос № 100.252
Здравствуйте, остро нуждаюсь в помощи.
Документы загружаются в базу из идентичной
это Бухгалтерия 7.7 4.55 релиз, но сильно до меня переписанный
Сначала все загружается в таблицу ТЗ.
Справочники Контрагентов и Договоров идентичны.
При загрузке договора возникает такая проблема. В поле договор документа попадает ссылка на поле Основной договор справочника Контрагентов, а не элемент справочника Договоры.
Грузятся документы отгрузок.
Документы оплат формируются в базе.
ОСВ по 62 счету формирует 2 строки по договорам.
Оплаты с нормальным договором, а отгрузки не та ссылка.
Если вручную зайти в поле договор Документа, то он встает правильно.
Как при загрузке установить договор правильно?
Фрагмент кода прилагаю.

Приложение:

Отправлен: 30.08.2007, 15:07
Вопрос задала: Marina Chernova (статус: Посетитель)
Всего ответов: 4
Мини-форум вопроса >>> (сообщений: 1)

Отвечает: Шахрайчук Владимир Анатольевич
Здравствуйте, Marina Chernova!
Здесь есть ошибка
Если Дог2.ТекущийЭлемент().Наименование=СокрЛП(ТЗ.Договор) Тогда
нужно писать
Если СокрЛП(Дог2.Наименование)=СокрЛП(ТЗ.Договор) Тогда
потому что все строковые реквизиты фиксированной длины праводополненные пробелами

Если это исправление не поможет, то вполне возможно, что договор переопределяется позднее. Посмотрите, нет ли где в другом месте строки
Договор=Контрагент.ОсновнойДоговор
Ответ отправил: Шахрайчук Владимир Анатольевич (статус: Практикант)
Ответ отправлен: 30.08.2007, 17:46
Оценка за ответ: 4
Комментарий оценки:
Полностью согласна и даже знаю, что строка Договор=Контрагент.ОсновнойДоговор
есть в предопределенной глобальной процедуре.
Замечания учла, но фрагмент так и не заработал.

Отвечает: Elric
Здравствуйте, Marina Chernova!

1. Сопоставление по наименованию (что контрагентов, что договоров) -- не самый надежный способ. В справочнике может быть более одного элемента с одним и тем же наименованием. По коду было бы более точно (при условии что они в обеих базах совпадают). Это просто общая рекомендация.
2. Стоит сделать фильтр, чтобы помеченные на удаление договоры не выбирались, даже если у них соответствующее наименование.
3. Проверять надо не просто наименование договора, а наименование без пробелов слева и справа. В правой части условия Вы функцию СокрЛП() поставили, а в левой забыли.
4. После того, как договор обнаружен, нужно прервать цикл, не искать другой договор с тем же наименованием. Тогда и время выполнения сократится, и дополнительная гарантия что если в базе два элемента с одинаковым наименованием, то всегда будет выбираться именно первый из них. Проще потом будет работать с данными.

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

Приложение:

---------
В творчестве рождается истина

Ответ отправил: Elric (статус: Специалист)
Ответ отправлен: 30.08.2007, 17:59
Оценка за ответ: 4
Комментарий оценки:
Согласна, кроме п.4
Прерывание прекращает и перебор строк принимаемого файла и документы вообще не попадают в базу.
Вот парадокс, советы все правильные, а фрагмент все равно не работает.

Отвечает: Полозов Олег aka Asher
Здравствуйте, Marina Chernova!

Я обычно не заморачиваюсь в таких ситуациях с рисованием обработок. Так как есть несколько других способов как это можно сделать:
1. Использовать УРБД. Неудобство этого способа - если необходима выгрузка только определенных объектов, нужно будет повозиться в семерке с миграцией объектов, а в 8.0 с планами обмена. Но в принципе день можно повозиться и потом расслабиться.
2. Воспользоваться конфигурацией конвертации объектов. Неудобство, надо хорошо разобраться с этой программой, но если конфигурации идентичны, то большинство настроек она сделает сама.
3. Есть обработки для выгрузки данных из одной базы в другую. Ну тут я вижу только приимущества.

В основном использую УРИБ, если у клиенов компонента установлена. а если нет, то обработку mcexp.ert (универсальный обмен данными в формате mxl)
Ответ отправил: Полозов Олег aka Asher (статус: 9-ый класс)
Ответ отправлен: 31.08.2007, 02:40
Оценка за ответ: 3
Комментарий оценки:
Советы неплохие, но мне не подходят.
Структура и качество связи(склад в поселке) таковы, что об УРИБе речи быть не могло.
база переписана(читай изуродована) процентов на 80, так, что стандартные 1С обработки не все работают.

Отвечает: Ромашов Евгений Николаевич
Здравствуйте, Marina Chernova!

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

надо попробывать после ПС.Записать(); поставить прервать;

так по коду вроде нормально должно быть, могу посоветовать отладчик, посмотреть что присваивается договору напротяжении всего кода, может позже где - нибудь обрабатывается контрагент и с него указывается договор по умолчанию
Ответ отправил: Ромашов Евгений Николаевич (статус: 3-ий класс)
Ответ отправлен: 31.08.2007, 05:07
Оценка за ответ: 3
Комментарий оценки:
Спасибо, совет хороший, кроме прерывания, которое прекращает перебор строк принимаемого файла и документы вообще не попадают в базу.
Контрагент и договор по умолчанию обрабатываются в предопределенной глобальной процедуре.
Я это знаю, но проблему по-прежнему не решила


Отправить вопрос экспертам этой рассылки

Приложение (если необходимо):

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

Обратите внимание!
Вопрос будет отправлен всем экспертам данной рассылки!

Для того, чтобы отправить вопрос выбранным экспертам этой рассылки или
экспертам другой рассылки портала RusFAQ.ru, зайдите непосредственно на RusFAQ.ru.


Форма НЕ работает в почтовых программах The BAT! и MS Outlook (кроме версии 2003+)!
Чтобы отправить вопрос, откройте это письмо в браузере или зайдите на сайт RusFAQ.ru.


© 2001-2007, Портал RusFAQ.ru, Россия, Москва.
Авторское право: ООО "Мастер-Эксперт Про"
Техподдержка портала, тел.: +7 (926) 535-23-31
Хостинг: "Московский хостер"
Поддержка: "Московский дизайнер"
Авторские права | Реклама на портале
Версия системы: 4.58 от 30.08.2007
Яндекс Rambler's Top100
RusFAQ.ru | MosHoster.ru | MosDesigner.ru | RusIRC.ru
Kalashnikoff.ru | RadioLeader.ru | RusFUCK.ru

В избранное