8.х ПОИСК ДОКУМЕНТА

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 8"", создана пользователем OIT, 6 ноя 2008.

  1. TopicStarter Overlay
    OIT
    Offline

    OIT Опытный в 1С

    Регистрация:
    7 май 2007
    Сообщения:
    347
    Симпатии:
    0
    Баллы:
    26
    В 1с бухгалтерия указываешь вид документа,дата,комментарий и документ находится
    в 1с Зарплата и управление персоналом таким образом не находится
    Подскажите пожалуйста в этом случае как находится документ
    Спасибо
  2. Эмин
    Offline

    Эмин Руководитель проектов

    Регистрация:
    25 май 2007
    Сообщения:
    1.178
    Симпатии:
    1
    Баллы:
    26
    Где и что вы указываете?
    Поиск можно осуществлять практически по любому реквизиту, вы делаете через запрос или через выборку или методами документов?
  3. TopicStarter Overlay
    OIT
    Offline

    OIT Опытный в 1С

    Регистрация:
    7 май 2007
    Сообщения:
    347
    Симпатии:
    0
    Баллы:
    26
    Код:
    Док = НайтиДокумент("СдельныйНаряд",Дата,"#Начисления");
    Функция НайтиДокумент(ВидДокумента,Дата,Комментарий)
    Запрос = Новый Запрос;
    Запрос.Текст = 
    "ВЫБРАТЬ
    |    Ссылка Док
    |ИЗ
    |    Документ."+ВидДокумента+"
    |ГДЕ
    |    Организация = &Организация
    |    И Комментарий ПОДОБНО &Комментарий
    </span>
    //|    И Ответственный = &Ответственный
    |    И НачалоПериода(Дата,День) = &ДатаНачалоПериода";
    Запрос.УстановитьПараметр("Организация",Организация);
    Запрос.УстановитьПараметр("ДатаНачалоПериода",НачалоДня(Дата));
    Запрос.УстановитьПараметр("Комментарий",Комментарий);
    Результат = Запрос.<span style='cursor: pointer; color:red' Onclick="window.open('http://www.1c-pro.ru/wiki/index.php/выполнить')">Выполнить();
    Если Результат.Пустой() Тогда
    НовыйДок = Документы[ВидДокумента].СоздатьДокумент();
    НовыйДок.Дата = Дата;
    НовыйДок.Организация  = Организация;
    НовыйДок.Комментарий  = Комментарий;
    ОбщегоНазначения.УстановитьНомерДокумента(НовыйДок);
    Иначе        
    Выборка = Результат.Выбрать();
    Выборка.Следующий();
    НовыйДок = Выборка.Док.ПолучитьОбъект();
    НовыйДок.Дата = Дата;
    ОбщегоНазначения.УстановитьНомерДокумента(НовыйДок);
    
    КонецЕсли;
    НовыйДок.Ответственный= Ответственный;
    Возврат НовыйДок;
    КонецФункции // ()
    
    
    Вот код где я пытаюсь найти документ
    НЕ ПОЛУЧАЕТСЯ

    а в СЛЕДУЮЩЕМ коде я немного по другому без поиска
    создаю новый документ
    но мне выдает сообщение Метод объекта не обнаружен(Записать)



    Код:
    Элемент=тзДанных[0];
    цх=Элемент.Цех;
    цх1=Элемент.Цех;
    кл=1;
    кл1=0;
    Пока цх1<="98" и кл1=0 Цикл
    НовыйДокумент=Документы.СдельныйНаряд.СоздатьДокумент();
    НовыйДокумент.Дата= Дата;
    НовыйДокумент.Организация= Организация;
    НовыйДокумент.ПодразделениеОрганизации=Справочники.ПодразделенияОрганизаций.НайтиПоКоду(цх1,Истина);
    НовыйДокумент.Номер="Сдельная "+Месяц(Дата);
    НД="Сдельная  "+Месяц(ДатаУдержаний);
    НовыйДокумент.Записать();
    ВР  = НовыйДокумент.Выработка;
    ИС  = НовыйДокумент.Исполнители;
    КонецЕсли;
    НачатьТранзакцию();
    Для каждого СтрокаДанных Из тзДанных Цикл
    Если СтрокаДанных.Отметка и СтрокаДанных.Цех=цх <span style='cursor: pointer; color:red' Onclick="window.open('http://www.1c-pro.ru/wiki/index.php/тогда')">Тогда			</span>       ТН=СтрокаДанных.ТабНом;
    КД=СтрокаДанных.Код;
    Сотрудник = НайтиСотрудника(ТН);
    
    КодЦех=СтрокаДанных.Цех;
    Если КодЦех ="98" Тогда
    КодЦех1="64";
    Иначе
    КодЦех1=КодЦех;
    КонецЕсли;
    Подразделение=Справочники.ФизическиеЛица.НайтиПоКоду(КодЦех1);
    Проводка =ВР.Добавить();
    Проводка.ТехнологическаяОперация  = Справочники.ТехнологическиеОперации.НайтиПоКоду("000000001",Истина);
    Проводка.СтатьяЗатрат            = Справочники.СтатьиЗатрат.НайтиПоКоду(КД);
    Проводка.Сумма = СтрокаДанных.СуммаНачисления;
    Проводка.СчетЗатрат  = ПланыСчетов.Хозрасчетный.ОбщепроизводственныеРасходы;
    Проводка.СчетЗатратНУ      = ПланыСчетов.Налоговый.ОбщепроизводственныеРасходы;
    
    Проводка = ИС.Добавить();
    Проводка.Сотрудник      = Сотрудник;
    Проводка.СуммаКНачислениюРегл  = СтрокаДанных.СуммаНачисления;
    Проводка.ВидВремени1 = Справочники.КлассификаторИспользованияРабочегоВремени.Работа;
    Проводка.Часов1  = СтрокаДанных.Часы;
    кл1=1;
    КонецЕсли;	
    Если СтрокаДанных.Отметка и СтрокаДанных.Цех<>цх и кл1=1 <span style='cursor: pointer; color:red' Onclick="window.open('http://www.1c-pro.ru/wiki/index.php/тогда')">Тогда	</span>    							цх1=СтрокаДанных.Цех;
    кл1=0;
    КонецЕсли;
    КонецЦикла;
    ЗафиксироватьТранзакцию();
    ВР.Записать();	
    ИС.Записать();	
    НовыйДокумент.Записать();
    
    цх=цх1;
    
    КонецЦикла;
    КонецПроцедуры
    
    Подскажите пожалуйста какие ошибки я допускаю
    Спасибо
  4. Эмин
    Offline

    Эмин Руководитель проектов

    Регистрация:
    25 май 2007
    Сообщения:
    1.178
    Симпатии:
    1
    Баллы:
    26
    Метод записать у вас не найден для ВР и ИС - попробуйте без переменных, а напрямую через документ перейти к движениям по нужным регистрам.

    В запросе попробуйте ограничить дату не равенством, а Между (началом дня и концом дня). Кроме того - я рекомендовал бы выборку сначала сделать полностью конструктором с минимумом условий. проверить - возвращает ли значение, если нет, то подумаем, если какая-то табличка вернется, то начнем добавлять условия по-одному. Я так часто делаю, когда запрос достаточно сложный, но иногда просто бывают странные глюки - их точно так же проверяю.
  5. TopicStarter Overlay
    OIT
    Offline

    OIT Опытный в 1С

    Регистрация:
    7 май 2007
    Сообщения:
    347
    Симпатии:
    0
    Баллы:
    26
    Вы правы нужно обойтись без переменных и все получилось огромное спасибо
    ну вот у меня небольшой вопросик когда я выбираю сотрудника как сделать чтобы с ним
    зацепилось подразделение где он работает а не выбирать из справочника
    Будьте добры подскажите пожалуйста
  6. Эмин
    Offline

    Эмин Руководитель проектов

    Регистрация:
    25 май 2007
    Сообщения:
    1.178
    Симпатии:
    1
    Баллы:
    26
    Рад что помогло, иногда через переменные не работает корректно...

    Про сотрудника лучше бы в новой теме спросить, но вообще - сотрудники привязаны к подразделениям через регистр сведений. При выборе сотрудника в нужном вам месте строите запрос и получаете подразделение, после этого можете подставлять его куда вам удобно.

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