7.7 Вопросы по языку

Тема в разделе "Общие вопросы "1С:Предприятие 7.7"", создана пользователем Vertex, 20 июл 2011.

  1. TopicStarter Overlay
    Vertex
    Offline

    Vertex Опытный в 1С

    Регистрация:
    14 июн 2011
    Сообщения:
    468
    Симпатии:
    4
    Баллы:
    29
    Простите за ламерский вопрос.. :angry:

    Что то не получается присвоить значение полю ввода...
    А именно, написал выгрузку контрагентов для переноса в другую базу,
    не получается присвоить значение в поле ЮрЛицо.

    Подскажите если не трудно....заранее благодарен.

    p.s не приходилось раньше присваивать им значения
  2. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    21.523
    Симпатии:
    407
    Баллы:
    104
    Приведите пример вашего кода - что не выходит?
    [off]Готовое решение выкладывать вам вряд ли кто-нибудь будет... Только совет[/off]
  3. TopicStarter Overlay
    Vertex
    Offline

    Vertex Опытный в 1С

    Регистрация:
    14 июн 2011
    Сообщения:
    468
    Симпатии:
    4
    Баллы:
    29
    Доброго времени....

    С тем случаем разобрался,

    проблемма в следующем

    Код:
    	Для КолЗап = 1 По ДБФН.КоличествоЗаписей() Цикл
    ДБФН.Перейти(КолЗап);
    
    
    Признак 		= Число(ДБФН.Group); 
    КодЭл			= СокрЛП(ДБФН.Kod); 
    Наименование	= СокрЛП(ДБФН.Name);
    ПолнНаим		= СокрЛП(ДБФН.PolnName);
    КодРодителя		= СокрЛП(ДБФН.Rod_kod);
    НаимРодителя	= СокрЛП(ДБФН.Rod_name);
    ВидНом			= СокрЛП(ДБФН.Vid);
    Ед			    = СокрЛП(ДБФН.ed);
    НДС			    = СокрЛП(ДБФН.NDS);
    НП			    = СокрЛП(ДБФН.NP);
    ТОсн			= СокрЛП(ДБФН.Osn); 
    
    РознЦена        = Число(ДБФН.CenaR);  
    ТипРознЦ        = СокрЛП(ДБФН.TipCenaR);
    ЗакупЦена       = Число(ДБФН.CenaZ);
    ТипЗакупЦ 		= СокрЛП(ДБФН.TipCenaZ);
    
    
    
    
    Если (Признак = 1) и (ПустоеЗначение(КодРодителя) = 1) Тогда
    Если Ном.НайтиПоКоду(КодЭл,0) = 0 Тогда
    Ном.НоваяГруппа();
    Ном.Код					= КодЭл;
    Ном.Наименование		= Наименование;
    Ном.Записать();
    КонецЕсли;
    //Продолжить;
    КонецЕсли;
    
    Если (Признак = 1) и (ПустоеЗначение(КодРодителя) = 0) Тогда
    ГруппаН = СоздатьОбъект("Справочник.Номенклатура");	
    ГруппаН.НайтиПоКоду(КодРодителя,0);
    ТекущийРодительН = ГруппаН.ТекущийЭлемент();	
    
    Если Ном.НайтиПоКоду(КодЭл,0) = 0 Тогда
    
    Ном.НоваяГруппа();
    
    Попытка
    Ном.Родитель		= ТекущийРодительН;
    Исключение
    Сообщить(ОписаниеОшибки());
    Возврат;
    КонецПопытки;
    
    Ном.Код					= КодЭл;
    Ном.Наименование		= Наименование;
    Ном.Записать(); 
    
    Сообщить("Добавили новую группу контрагентов: "+Наименование);
    КонецЕсли;
    //Продолжить;
    КонецЕсли;
    
    Если Признак = 0 Тогда // <-----
    
    Ном.НайтиПоКоду("00000002",0); //Тестово проверяется номер группы 00000002, а в нормальном режиме проверяется   КодРодителя. Но элементы все создаются вне группы а в корне справочника 
    ТекущийРодительН = Ном.ТекущийЭлемент().Код;
    
    
    Если Ном.НайтиПоКоду(КодЭл,0) = 0 Тогда  
    Ном.Новый();
    
    Попытка
    Ном.Родитель		= ТекущийРодительН;
    Исключение
    Сообщить(ОписаниеОшибки());
    Возврат;
    КонецПопытки;
    
    Ном.Код = КодЭл;
    //Кнт.ИспользоватьРодителя(ТекущийРодитель); 
    
    
    Ном.Наименование	 = Наименование;
    
    Ном.ПолнНаименование = ПолнНаим;
    //Если Перечисление.ВидыНоменклатуры.Прочее = 
    //Ном.ВидНоменклатуры  = Перечисление.ВидыНоменклатуры.Прочее; 
    Ном.Записать();
    КонецЕсли;  
    Продолжить;
    КонецЕсли;	
    КонецЦикла;
    

    Не работает создание внутри группы
  4. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    21.523
    Симпатии:
    407
    Баллы:
    104
    Внешне все верно.. Поспотрите что возвращает метод
    Код:
    ГруппаН.НайтиПоКоду(КодРодителя,0);
    
    
    Вернет 1 или 0?
  5. TopicStarter Overlay
    Vertex
    Offline

    Vertex Опытный в 1С

    Регистрация:
    14 июн 2011
    Сообщения:
    468
    Симпатии:
    4
    Баллы:
    29
    Возвращает 1

    Прикладываю выгруженный файл со списком номенклатуры....

    Уже незнаю куда копать....в понедельник нужно уже выгрузку загрузку на настоящей базе делать

    Вложения:

    • Nom.rar
      Размер файла:
      195,6 КБ
      Просмотров:
      44
  6. TopicStarter Overlay
    Vertex
    Offline

    Vertex Опытный в 1С

    Регистрация:
    14 июн 2011
    Сообщения:
    468
    Симпатии:
    4
    Баллы:
    29
    Незнаю почему, но ошибка была в этом условии
    Код:
    Если Ном.НайтиПоКоду(КодЭл,0) = 0 Тогда 
    ....код
    КонецЕсли;
    
    
    создаваемый элемент не мог получить родителя....
    Условие изменил следующим образом
    Код:
    Если Ном.НайтиПоКоду(КодЭл,0) = 1 Тогда 
    Сообщить("Элемент найден");
    Иначе
    ...КОД...
    КонецЕсли;
    
    
    Видимо глюк платформы...
    только не пойму, с контрагентами прокатывает..
  7. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    21.523
    Симпатии:
    407
    Баллы:
    104
    Это вряд ли. Платформа какая?
  8. TopicStarter Overlay
    Vertex
    Offline

    Vertex Опытный в 1С

    Регистрация:
    14 июн 2011
    Сообщения:
    468
    Симпатии:
    4
    Баллы:
    29
    Доброго времени.
    Появилась необходимость выполнить обрезание базы,
    но штатными средствами 1С это не под силу, т.к как нет времени ждать.
    Решил написать выгрузку остатков по номенклатуре, и загрузку в скопированную базу с очищенными документами и справочниками типа партий и очисткой удалённых элементов.
    Так же сей метод подзволит почистить партии ибо всё очень криво.

    Нужно получить итоги по товаруN на каждой фирме, на каждом складе и поставщика этого товара.
    Я написал такой алгоритм:
    Код:
    	ТекстЗапроса = " 
    |С НачДата По КонДата;
    |Фирма = Регистр.ОстаткиТМЦ.Фирма;
    |Склад = Регистр.ОстаткиТМЦ.Склад;
    |Товар = Регистр.ОстаткиТМЦ.Номенклатура;
    |Количество = Регистр.ОстаткиТМЦ.Количество; 
    |Поставщик = Регистр.ОстаткиТМЦ.ТекущийДокумент.ПоступлениеТМЦ.Контрагент; 
    |Группировка Товар Без Групп;
    |Группировка Фирма Без Групп;
    |Группировка Склад Без Групп;
    |Функция КОст = КонОст(Количество);
    |Условие (Фирма = ВыбФирма);
    |Условие (ВыбСклад = Склад);
    |";
    
    Если Запрос.Выполнить(ТекстЗапроса)=0 Тогда
    Возврат;
    КонецЕсли;
    
    
    Запрос2 = СоздатьОБъект("ЗАпрос");
    
    ТекстЗапроса2 = " 
    |С НачДата По КонДата;
    |Фирма = Регистр.ПартииНаличие.Фирма;
    |Склад = Регистр.ПартииНаличие.МОЛ;
    |Товар = Регистр.ПартииНаличие.Номенклатура;
    |Количество = Регистр.ПартииНаличие.Количество; 
    |Поставщик = Регистр.ПартииНаличие.Партия.Поставщик; 
    |Группировка Товар Без Групп;
    |Группировка Фирма Без Групп;
    |Группировка Склад Без Групп;
    |Группировка Поставщик Без Групп;
    |Функция КОст = КонОст(Количество);
    |Условие (Фирма = ВыбФирма);
    |Условие (ВыбСклад.МОЛ = Склад);
    |";
    
    Если Запрос2.Выполнить(ТекстЗапроса2)=0 Тогда
    Возврат;
    КонецЕсли;  
    
    
    
    
    Пока Запрос.Группировка(1)=1 Цикл
    Пока Запрос.Группировка(2)=1 Цикл
    Пока Запрос.Группировка(3)=1 Цикл
    
    Пока Запрос2.Группировка(1)=1 Цикл
    
    Пока Запрос2.Группировка(2)=1 Цикл
    
    Пока Запрос2.Группировка(3)=1 Цикл  
    Пока Запрос2.Группировка(4)=1 Цикл 
    Если (Запрос.КОст = Запрос2.КОст) Тогда
    
    Сообщить("   Товар3 "+Запрос2.Товар+" Фирма "+Запрос2.Фирма+" Склад "+Запрос2.Склад+" Остаток "+Запрос2.КОст+"  "+Запрос2.Поставщик);
    
    Иначе
    
    КонецЕсли;
    КонецЦикла;         
    КонецЦикла;
    КонецЦикла;
    КонецЦикла;
    КонецЦикла;
    КонецЦикла;
    КонецЦикла;
    
    
    Cравниваются остатки двух регистров на один и тот же момент времени. Если итоги регистра остатков совпадают с итогами по партии тогда я получаю всё что нужно...и это актуальная цифра, но как быть с теми итогами по регистру партий когда куча партий не списанных, куча минусовых.....там конца и края ненайти, я решил написть анализатор который выведет поставщика той партии у которой остаток больше и приклеит наименование поставщика к итогу регистра остатков......тогда есть возможность что мы угадаем последнюю партию, что очень важно для наших менеджеров, вот только затрудняюсь с алгоритмом.
    Хотелось бы услышать совет более опытных.
    Я так понимаю нужно создать таблицу значений и в случае не истинности условия равенства между регистрами заполнять её наименованием поставщика и остатка. А как потом найти максимальный элемент в ней?

    ЗЫ....Извините если много букофф


    p.s Условия в регистре написаны для теста, в готовом варианте их не будет
  9. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    21.523
    Симпатии:
    407
    Баллы:
    104
    В любом случае количественный остаток берите из регистра ОстаткиТМЦ. Там они ВСЕГДА актуальны. Из партий можно "хапнуть" только себестоимость. Да и нужна ли она вам - еще не известно. Здесь 2 пути: либо просто тупо брать для ввода остатков цену из последнего поступления, либо себесоимость из партий. Думаю все равно придется корректировать ручками. Весь вопрос в том какой из подходов более ближе к реальности
  10. TopicStarter Overlay
    Vertex
    Offline

    Vertex Опытный в 1С

    Регистрация:
    14 июн 2011
    Сообщения:
    468
    Симпатии:
    4
    Баллы:
    29
    Из партий хочу взять только поставщика и то только с последнего поступления.
    А себестоимость я выгружать не буду.
    Справочник номенклатуры, цен, типов цен останутся.
    В момент загрузки будут создаваться документы ввод остатков ТМЦ себестоимость будет проставляться из справочника цен. + у нас учёт по каждому магазину реализован как учёт по каждой отдельной фирме, со своим типом цен, так что тут тоже думаю проблемм не возникнет.




    Или может есть какой то более удобный способ получить поставщика для товара? Подскажите... буду признателен :angry:
  11. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    21.523
    Симпатии:
    407
    Баллы:
    104
    Смотря так у вас организован партионный учет... Можно и из ргистра продаж. Но поскольку в партияходнозначный БАРДАК и есть несколько поставщиов на один и тот же товар то можно и из документов поступления. Медленнее, но зато железобетонно.
  12. TopicStarter Overlay
    Vertex
    Offline

    Vertex Опытный в 1С

    Регистрация:
    14 июн 2011
    Сообщения:
    468
    Симпатии:
    4
    Баллы:
    29
    А к документам поступления..... ведь отдельный запрос создать нужно или запрос выполнять к также к регистру остатков но выводя документы поступления...так?
    Тогда анализировать придётся за весь период существования базы чтобы однозначно пройти по всем дока
  13. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    21.523
    Симпатии:
    407
    Баллы:
    104
    Все доки и не нужны. Выборка в обратном порядке с проверкой на заполненность цены в ТЗ (которую вы получите из запроса по остаткам). Даже самый залежалый товар "всплывет". Я подобное делал при обрезке самописной базы. Там вообще партий не было. Вышел из положения просто - добавил еще одну колонкку ФЛАГ (число). При заполнении цены по строке ТЗ присваивал 1. Далее условие

    Код:
    Если ТЗ.Итог("Флаг")=ТЗ.КоличествоСтрок() Тогда
    Прервать; //цикл по документам
    КонецЕсли;
    
    
    
  14. TopicStarter Overlay
    Vertex
    Offline

    Vertex Опытный в 1С

    Регистрация:
    14 июн 2011
    Сообщения:
    468
    Симпатии:
    4
    Баллы:
    29
    Выборку запускал ВыбратьДокументв() и в цикле ПолучитьДокумент() ?
    А цену для чего проверял?Вы не опечатались? Количество может? :angry:
  15. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    21.523
    Симпатии:
    407
    Баллы:
    104
    Да. Получить документ + вложенный цикл по строкам. Только выборка документов в обратном порядке.

    Цену я проверял на заполненность. Т.е. имеем запрос с отстатками. Добавляем 2 колонки цена и флаг. Пошлепали по документам. Заполняем цену и флаг одновременно - если флаг уже установлен - ничего не делаем (нам же нужна последняя цена). Выход из цикла по условию приведенном выше.
  16. TopicStarter Overlay
    Vertex
    Offline

    Vertex Опытный в 1С

    Регистрация:
    14 июн 2011
    Сообщения:
    468
    Симпатии:
    4
    Баллы:
    29
    А из доков там и поставщика получить да?
  17. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    21.523
    Симпатии:
    407
    Баллы:
    104
    и цену и поставщика...
  18. TopicStarter Overlay
    Vertex
    Offline

    Vertex Опытный в 1С

    Регистрация:
    14 июн 2011
    Сообщения:
    468
    Симпатии:
    4
    Баллы:
    29
    Ссори и ещё вопросик :angry:
    Колонки добавляем в таблицу значений? (ТаблицаЗначений),
    а во флаг что заносим? И значение флага заполняем при прогонке запроса?
  19. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    21.523
    Симпатии:
    407
    Баллы:
    104
    Не внимательно читаете....
    1) Создали запрос. Выгрузити его в ТЗ.
    2) Добавили колонки флаг,цена + (у вас еще поставщик - мне он был не нужен)
    3) Циклом пошли по документам для заполнения. Используте транзакцию - быстрее будет.

    Что еще объяснить?
  20. TopicStarter Overlay
    Vertex
    Offline

    Vertex Опытный в 1С

    Регистрация:
    14 июн 2011
    Сообщения:
    468
    Симпатии:
    4
    Баллы:
    29
    Не могу понять что флаг будет хранить :angry: :D :aua:

    Значение для включение в поиск по документам?

Поделиться этой страницей