Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Проблема со счетами при переносе справочника ТМЦ
Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 > Программисту > Программирование в 1С Предприятие 7.7
miha74
Привет всем! У меня платформа 7.70.027, конфа ПУБ для Украины 7.70.028. Написал обработку для копирования элементов справочника ТМЦ из базы в базу через OLE. Так вот есть реквизит Счет(Счет, на котором учитываем ТМЦ) тип значения соответсвенно "Счет". Сначала я его переносил так:


СчетОле = ОЛЕ_Приемник.CreateObject("Счет");
Если СчетОле.НайтиПоКоду(СпрТМЦ.Счет.Код) = 0 Тогда
Сообщить("Не найден Счет в базе Приемник!");
Возврат;
КонецЕсли;
СпрТМЦОле.Счет = СчетОле.ТекущийСчет();

При использовании таким образом перенесенного элемента справочника в расходной накладной например при проведении ругается на пустой счет(типа не указан счет и не может провести, как-то так). Если открыть этот ТМЦ и сохранить - все ок. При ковырянии дбф-файла с данным справочником выяснилось, что счет прописывается как-то криво, "1AC 33" - так при пересохранеии или при ручном добавлении ТМЦ, "0 33" - а так при применении моей мощной обработки. Может это план счетов указывается перед самим счетом? Вот так не помогает:


СчетОле = ОЛЕ_Приемник.CreateObject("Счет");
ПланСчетовОле = ОЛЕ_Приемник.ПланыСчетов.ЗначениеПоИдентификатору("Основной");
СчетОле.ИспользоватьПланСчетов(ПланСчетовОле);
Если СчетОле.НайтиПоКоду(СпрТМЦ.Счет.Код) = 0 Тогда
Сообщить("Не найден Счет в базе Приемник!");
Возврат;
КонецЕсли;
СпрТМЦОле.Счет = СчетОле.ТекущийСчет();
MATEVI
//Попробуй так
//ЗначениеАтрибута содержит переменную ОЛЕ
ПланСчетов=ЗначениеАтрибута.Вид();//находим вид плана счетов
ПлСчПр=ИБПр.CreateObject("Счет."+ПланСчетов);
Если ПлСчПр.НайтиПоКоду(Строка(ЗначениеАтрибута), 2)=1 тогда
Возврат ПлСчПр.ТекущийСчет();
Иначе
//Возврат СоздатьСчет(ИБПр, ПлСчПр, ЗначениеАтрибута);
КонецЕсли;

//возможно проблема в этом ПланСчетовОле = ОЛЕ_Приемник.ПланыСчетов.ЗначениеПоИдентификатору("Основной");
miha74
Вот спасибо! Помогло! Оказывается, при создании объкта типа Счет, нада сразу указывать к какому плану счетов его относить.
СчетОле = ОЛЕ_Приемник.CreateObject("Счет.Основной");  //<-------------
//ПланСчетовОле = ОЛЕ_Приемник.ПланыСчетов.ЗначениеПоИдентификатору("Основной");
//СчетОле.ИспользоватьПланСчетов(ПланСчетовОле);
Если СчетОле.НайтиПоКоду(СпрТМЦ.Счет.Код) = 0 Тогда
    Сообщить("Не найден Счет в базе Приемник!");
    Возврат;
КонецЕсли;
СпрТМЦОле.Счет = СчетОле.ТекущийСчет();
MATEVI
Удачи в борьбе с ОЛЕ smile.gif Сам борюся smile.gif))
Fynjy
Вот чем плох внешний файл? И чем плохи типовые файло с ИТС импорт, экспорт ерт?
MATEVI
Цитата(Fynjy @ 28.01.10, 18:14) необходимо зарегистрироваться для просмотра ссылки
Вот чем плох внешний файл? И чем плохи типовые файло с ИТС импорт, экспорт ерт?

Да ничем... Просто "бухов" пугают слова каталог импорта, выберите тип файла.
Откройте сначала в этой базе потом в этой...
Лично в моем случае необходима организация ежедневного переноса нескольких видов документов.
Дорабатывать чужое смысла не вижу. Поэтому делаю свое.
И что изменится от использования написанных ч/з внешки? Ничуть не проще....
Ardi
Цитата(Fynjy @ 28.01.10, 18:14) необходимо зарегистрироваться для просмотра ссылки
Вот чем плох внешний файл?

Возможно мы не умеем внешними УДОБНО пользоваться.
Может расскажешь, как легче написать выгрузку и загрузку через промежуточный файл?

Цитата(Fynjy @ 28.01.10, 18:14) необходимо зарегистрироваться для просмотра ссылки
И чем плохи типовые файло с ИТС импорт, экспорт ерт?

А оно нормально переносит реквизиты неопределённого типа, и тд?
miha74
Цитата(Fynjy @ 28.01.10, 18:14) необходимо зарегистрироваться для просмотра ссылки
Вот чем плох внешний файл? И чем плохи типовые файло с ИТС импорт, экспорт ерт?

Лично мне удобнее так(через ОЛЕ), добавляю ТМЦ в справочник я сам и это нада делать в нескольких одинаковых базах.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.