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

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

  Все выпуски  

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


Хостинг Портала RusFAQ.ru:
MosHoster.ru - Профессиональный хостинг на Windows 2008

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

Чемпионы рейтинга экспертов в этой рассылке

Тимошенко Дмитрий
Статус: 10-й класс
Рейтинг: 113
∙ повысить рейтинг >>
Анатолий Ясень
Статус: Студент
Рейтинг: 57
∙ повысить рейтинг >>
Владимир Лазурко
Статус: Практикант
Рейтинг: 52
∙ повысить рейтинг >>

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

Выпуск № 1011
от 11.05.2009, 13:35

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

Нам важно Ваше мнение об этой рассылке.
Оценить этот выпуск рассылки >>

Вопрос № 166528: Есть некая конфа на 1Cv7. Работа юзеров с базой ведётся круглосуточно. Утром ежедневно с 8.00 до 9.00 производится пересменка, во время которой все доки за предыдущие сутки относятся по отчетам к предыдущему дню. Например, Смена Иванов+Петров+Сидоров...


Вопрос № 166577: модуль формы Процедура ПриОткрытии() ПриЗаписиПерепроводить(1); РегЗакрытие=Регистр.ЗакрытиеСменыПДО; ДатаНачПред=РегЗакрытие.ДатаКонПред; ВремяНачПред= РегЗакрытие.ВремяКонПред; КонецПроцедуры Процедура ВремяТек()...
Вопрос № 166588: Подскажите пожалуйста как в 1С v7.7 в Запросах работать с перечислениями. В привиденном ниже коде ЛьготнаяГруппа не заполняется. Заранее благодарен. Запрос = СоздатьОбъект("Запрос"); ТекстЗапроса = "//{{ЗАПРОС(Сформиров...
Вопрос № 166602: Здавстыуйте уважаемые эксперты! В св оей расчетной работе сталкнулся со следующей проблемой: есть документ"ВыдачаАбонемента". В самом документе 2 поля(колонки):"фамилия посетителя" и "количество абонементов". При доба...

Вопрос № 166.528
Есть некая конфа на 1Cv7. Работа юзеров с базой ведётся круглосуточно. Утром ежедневно с 8.00 до 9.00 производится пересменка, во время которой все доки за предыдущие сутки относятся по отчетам к предыдущему дню. Например, Смена Иванов+Петров+Сидоров трудилась с 4 мая (маялась) (с 8.00) до 5 мая (до 8.20). Все отчеты формируемые по проведенным докам должны быть с дополнительной условной датой 4 мая. Формируем запрос по дате 4 мая... даже если док был проведен в 02 часа 35 минут 5 мая (то есть ночью) - этот док входит в отчёт, так как относится к той самой смене. Время начала-конца пересменки плавающее с 8.00 до 9.00.
Как реализовать, подскажите плииз.
Отправлен: 05.05.2009, 17:26
Вопрос задал: Torro (статус: Посетитель)
Всего ответов: 3
Мини-форум вопроса >>> (сообщений: 10)

Отвечает: Дмитрий Сташенко
Здравствуйте, Torro!

Используйте метод документов ВыбратьПоЗначению()

Синтаксис:

ВыбратьПоЗначению(<Дата1>,<Дата2>,<ИмяОтбора>,<Знач>)

Назначение:
Открыть выборку документов в интервале дат с заданным значением реквизита отбора.

Возвращает:
1 - если действие выполнено и в выборке есть хотя бы один документ;
0 - если действие не выполнено или в выборке нет ни одного документа.

Параметры:
<Дата1> - дата, документ или позиция начала выборки документов. Если данный параметр опущен, то выборка начинается с самого первого существующего в системе документа.
<Дата2> - дата, документ или позиция конца выборки документов. Если данный параметр опущен, то выборка заканчивается самым последним существующим в системе документом.
<ИмяОтбора> - строка с названием Общего реквизита документов либо названием Графы отбора журналов;
<Знач> - значение отбора, по которому строится выборка документов.

Замечание:
Метод можно использовать только для объектов, созданных функцией СоздатьОбъект.

Таким образом, имея общий реквизит "ДатаСмены", который идентифицирует необходимую смену, например, как у вас - дата 04.05.09, т.е. начало работы смены, и отбирая документы за 2 дня с 04.05.09 по 05.05.09, т.е. с начала работы смены по ее окончание, в выборке мы получим необходимые документы. Естественно, необходимо контролировать запись общего реквизита "ДатаСмены", например, в предопределенной процедуре ПриЗаписи() каждого документа.

Приложение:

Ответ отправил: Дмитрий Сташенко (статус: Практикант)
Ответ отправлен: 05.05.2009, 17:56

Как сказать этому эксперту "спасибо"?
  • Отправить SMS #thank 248673 на номер 1151 (Россия) | Еще номера >>
  • Отправить WebMoney:
  • Вам помогли? Пожалуйста, поблагодарите эксперта за это!


    Отвечает: Астафьев Александр Николаевич
    Здравствуйте, Torro! Если в вашей конфигурации выборка данных ведется перебором документов то примените Процедуру ВыбратьДокументы(<?>,)
    Синтаксис:
    ВыбратьДокументы(<Дата1>,<Дата2>)
    Причем задать можно как:
    <Дата1> - позиция начала выборки документов.
    <Дата2> - позиция конца выборки документов.
    Т.е. например Дата1 = ТекДокНач.ПолучитьПозицию(); и Дата2 = ТекДокКон.ПолучитьПозицию();
    Где ТекДокНач и ТекДокКон реквизиты диалога в отчете для первого и последнего документов в выборке отчета.

    Определение начального и конечного документа можно автоматизировать через процедуру: ПолучитьВремя(Часы,Минуты,Секунды)
    Возвращает время документа в переданные для этого переменные <Часы>, <Минуты>, <Секунды>.
    Возвращает:
    Строковое значение времени записи документа в виде 'ЧЧ.ММ.СС'.
    Надеюсь сообразите как через операцию сравнения отсортировать документы по дате и времени.

    Если у Вас отче т работает через запрос то выборку документов о которой я сказал загоните в список значений (например СписДок) а в запросе используйте понятие "ТекущийДокумент" и к нему в условиях используйте вхождение в этот список.

    Я специально опустил строки алгоритма. Потому что если Вам понятно что я написал действуйте, если нет вызывайте програмиста т.к. Ваши шансы изменить существующие отчеты нулевые. Удачи !!!

    Приложение:

    ---------
    не верь, не бойся, не проси!!!

    Ответ отправил: Астафьев Александр Николаевич (статус: Студент)
    Ответ отправлен: 05.05.2009, 18:12

    Как сказать этому эксперту "спасибо"?
  • Отправить SMS #thank 248674 на номер 1151 (Россия) | Еще номера >>
  • Отправить WebMoney:
  • Вам помогли? Пожалуйста, поблагодарите эксперта за это!


    Отвечает: Крюков Р.А.
    Здравствуйте, Torro!
    Можно решить следующим образом:
    Добавить в конфу документы ОткрытиеСмены и ЗакрытиеСмены
    можно без реквизитов потом если что добавить для внутренних нужд
    достаточно будет внутреннего реквизита "Автор" тип Справочник.Пользователи
    при начале смены работника создавать документ ОткрытиеСмены (лучше бы автоматом при входе систему) по окончании смены обязать делать ЗакрытиеСмены
    Отчеты соответственно нужно переделать оперируя не датами, а Документами.
    т.е. Смена - не ДатаНач и ДатаКон, а Документ.ОткрытиеСмены и Документ.ЗакрытиеСмены.

    ---------
    Отвечаю только на вопросы в тему.
    Ответ отправил: Крюков Р.А. (статус: 8-й класс)
    Ответ отправлен: 05.05.2009, 19:52

    Как сказать этому эксперту "спасибо"?
  • Отправить SMS #thank 248679 на номер 1151 (Россия) | Еще номера >>
  • Отправить WebMoney:
  • Вам помогли? Пожалуйста, поблагодарите эксперта за это!

    Оценка за ответ: 5


    Вопрос № 166.577
    модуль формы

    Процедура ПриОткрытии()
    ПриЗаписиПерепроводить(1);
    РегЗакрытие=Регистр.ЗакрытиеСменыПДО;
    ДатаНачПред=РегЗакрытие.ДатаКонПред;
    ВремяНачПред= РегЗакрытие.ВремяКонПред;
    КонецПроцедуры

    Процедура ВремяТек()
    ДатаКонПред=ТекущаяДата();
    ВремяКонПред =ТекущееВремя();
    КонецПроцедуры

    модуль документа

    Процедура ОбработкаПроведения()
    ДатаКонПред=ДатаДок;
    РегЗакрытие=Регистр.ЗакрытиеСменыПДО;
    РегЗакрытие.ВремяКонПред=ВремяКонПред;
    РегЗакрытие.ДатаКонПред=ДатаКонПред;
    РегЗакрытие.ДатаНачПред=ДатаНачПред;
    РегЗакрытие.ВремяНачПред=ВремяНачПред;
    РегЗакрытие.ДвижениеВыполнить();
    КонецПроцедуры

    ошибка при проведении

    РегЗакрытие.ДвижениеВыполнить();
    {Документ.ЗакрытиеСменыПДО.Модуль Документа(12)}: Движения регистров не могут выполняться у данного объекта.

    подскажите, где грабли?
    Отправлен: 06.05.2009, 00:20
    Вопрос задал: Torro (статус: Посетитель)
    Всего ответов: 1
    Мини-форум вопроса >>> (сообщений: 3)

    Отвечает: Владимир Лазурко
    Здравствуйте, Torro!

    Убедитесь, что в свойствах документа включен флажок "Разрешить проведение документа", а т.к. этот документ делает движение регистров, включите флажок "Оперативный учет".

    Успехов!
    Владимир.
    ---------
    И как хотите, чтобы с вами поступали люди, так и вы поступайте с ними. (Евангелие от Луки, 6:31, совр. перевод)
    Ответ отправил: Владимир Лазурко (статус: Практикант)
    Ответ отправлен: 06.05.2009, 09:07

    Как сказать этому эксперту "спасибо"?
  • Отправить SMS #thank 248702 на номер 1151 (Россия) | Еще номера >>
  • Отправить WebMoney:
  • Вам помогли? Пожалуйста, поблагодарите эксперта за это!


    Вопрос № 166.588
    Подскажите пожалуйста как в 1С v7.7 в Запросах работать с перечислениями. В привиденном ниже коде ЛьготнаяГруппа не заполняется. Заранее благодарен.

    Запрос = СоздатьОбъект("Запрос");
    ТекстЗапроса =
    "//{{ЗАПРОС(Сформировать)
    |ОбрабатыватьДокументы все;
    |Период с ВыбНачПериода по ВыбКонПериода;
    |ЛьготнаяГруппа = Справочник.Льготники.ВидыЛьгот; //ВидыЛьгот - имеет тип значения: Перечисление.ВидыЛьгот
    |Группировка ЛьготнаяГруппа;
    |"//}}ЗАПРОС
    Отправлен: 06.05.2009, 08:33
    Вопрос задал: Kriman (статус: Посетитель)
    Всего ответов: 2
    Мини-форум вопроса >>> (сообщений: 3)

    Отвечает: Владимир Лазурко
    Здравствуйте, Kriman!

    Я сначала не понял Ваш вопрос, решил, что Вам необходимо получить список значений перечисления.
    Запросы очень хорошо работают с реквизитами типа "перечисление", вот только список перечислений и их значений с помощью запроса получить нельзя.
    В Вашем запросе не хватает еще одной группировки по элементам справочника Льготники.

    Добавьте в Ваш запрос такую строчку |Льготники = Справочник.Льготники.ТекущийЭлемент;:
    Код:
    Запрос = СоздатьОбъект("Запрос");
    ТекстЗапроса =
    "//{{ЗАПРОС(Сформировать)
    |ОбрабатыватьДокументы все;
    |Период с ВыбНачПериода по ВыбКонПериода;
    |Льготники = Справочник.Льготники.ТекущийЭлемент;
    |ЛьготнаяГруппа = Справочник.Льготники.ВидыЛьгот; //ВидыЛьго т - имеет тип значения: Перечисление.ВидыЛьгот
    |Группировка ЛьготнаяГруппа;
    |"//}}ЗАПРОС

    И Вы получите список из видов льгот, используемый в данном наборе справочника Льготники.

    В Приложении (1) пример запроса по справочнику Номенклатура, делающего группировку по типу товара (Перечисление.ТипыТовара). Если поменять группировки местами, то он выведет сначала товар, потом тип товара. Если в моем примере группировку по видам ТМЦ определить как Группировка ВидТМЦ Все Вошедшие в Запрос, то Вы получите весь список значений перечисления, используемый данным набором элементов (списк или группа).

    В Приложениях (2) и (3) пример кода, выводящий все перечисления конфигурации и их значения.

    Успехов!
    С уважением, Владимир.

    Приложение:

    ---------
    И как хотите, чтобы с вами поступали люди, так и вы поступайте с ними. (Евангелие от Луки, 6:31, совр. перевод)

    Ответ отправил: Владимир Лазурко (статус: Практикант)
    Ответ отправлен: 07.05.2009, 09:21

    Как сказать этому эксперту "спасибо"?
  • Отправить SMS #thank 248767 на номер 1151 (Россия) | Еще номера >>
  • Отправить WebMoney:
  • Вам помогли? Пожалуйста, поблагодарите эксперта за это!

    Оценка за ответ: 5
    Комментарий оценки:
    Владимир, спасибо огромное. Направили в нужное русло, все получилось.


    Отвечает: Anton Devitsin
    Здравствуйте, Kriman!

    Неправильно построен запрос. После работы запроса вы получите количество вариантов группировки по количеству вариантов в перечислении. Те если у вас 3 вида льгот - (а в Справочнике встречается только 2 из них) то на выходе будет 2 значения и все. Так же хочу заметить что при работе с текстовыми запросами вы можете оперировать только простыми типами данных и строками фиксированной длины.

    "//{{ЗАПРОС(Сформировать)
    |ОбрабатыватьДокументы все;
    |Период с ВыбНачПериода по ВыбКонПериода;
    |ЛьготнаяГруппа = Справочник.Льготники.ВидыЛьгот; //ВидыЛьгот - имеет тип значения: Перечисление.ВидыЛьгот
    |Лготник = Спправочник.Льготники.ТекущийЭлемент();
    |Группировка ЛьготнаяГруппа;
    |Группировка Льготник Без Групп;
    |"//}}ЗАПРОС

    Теперь при обходе по группировке льготнаяГруппа а внутри ее по группировке Льготник вы получите список Льготников в данной льготной группе
    Ответ отправил: Anton Devitsin (статус: 3-й класс)
    Ответ отправлен: 07.05.2009, 15:22

    Как сказать этому эксперту "спасибо"?
  • Отправить SMS #thank 248788 на номер 1151 (Россия) | Еще номера >>
  • Отправить WebMoney:
  • Вам помогли? Пожалуйста, поблагодарите эксперта за это!

    Оценка за ответ: 5
    Комментарий оценки:
    Антон, большое спасибо. Я убрал часть кода что бы сократить размер текста, интересовала работа в запросе именно с перечислениями, поэтому создалось впечатление неправильно построенного запроса, извините. Владимир Лазурко уже помог мне. Но Ваш ответ то же помог мне, я Вам благодарен за помощь.


    Вопрос № 166.602
    Здавстыуйте уважаемые эксперты!
    В своей расчетной работе сталкнулся со следующей проблемой: есть документ"ВыдачаАбонемента". В самом документе 2 поля(колонки):"фамилия посетителя" и "количество абонементов". При добавлении посетителя в существующий документ с фамилией, которая там уже присутствует, хотелось бы, что б фамилия не добавлялась два раза, а в одну фамилию в "количество абонементов" вписывалось количество добавлений, т.е в "количество абонементов" необходим какой-то, по-видимому, счетчик.
    Заранее благодарен!
    Отправлен: 06.05.2009, 11:50
    Вопрос задал: Paffel1987 (статус: Посетитель)
    Всего ответов: 2
    Мини-форум вопроса >>> (сообщений: 2)

    Отвечает: Владимир Лазурко
    Здравствуйте, Paffel1987!

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

    Поэтому такие счетчики необходимо хранить в специально для этого предназначенных хранилищах и делать по ним движения документами. В седьмой платформе такими хранилищами для различных компонент выступают специфичные им хранилища:
    • Бухгалтерский учет - планы счетов
    • Оперативный учет - регистры
    • Расчет - журналы расчета

    В восьмой версии такими хранилищами выступают регистры. О обеих системах платформа сама следит за движением документов и при их изменении, соответственно меняются и проводки этих документов.

    Вывод: Вам необходимо такой "счетчик12 абонентов реализовать на регистрах или на плане счетов в счетах с количественным учетом.

    Можно обсудить Ваш вопрос в мини-форуме.
    С уважением, Владимир.
    ---------
    И как хотите, чтобы с вами поступали люди, так и вы поступайте с ними. (Евангелие от Луки, 6:31, совр. перевод)
    Ответ отправил: Владимир Лазурко (статус: Практикант)
    Ответ отправлен: 06.05.2009, 12:39

    Как сказать этому эксперту "спасибо"?
  • Отправить SMS #thank 248725 на номер 1151 (Россия) | Еще номера >>
  • Отправить WebMoney:
  • Вам помогли? Пожалуйста, поблагодарите эксперта за это!


    Отвечает: М.Денис
    Здравствуйте, Paffel1987!
    У меня есть: документ ВыдачаАбонемента, табличная часть документа Посетители, реквизиты табличной части Посетитель и Количество
    В приложении 2 пункта: 1 - собственно ваш вопрос, 2 - процедура, в результате выполнения которой найденный дубль строки выделяется цветом
    П.С. Первая процедура - обработчик события ПриИзменении поля ввода Посетитель строки табличного поля Посетители,
    Вторая процедура - обработчик события ПриПолученииДанных табличного поля Посетители

    Приложение:

    ---------
    The important thing is not to stop questioning. Albert Einstein

    Ответ отправил: М.Денис (статус: 4-й класс)
    Ответ отправлен: 06.05.2009, 15:33

    Как сказать этому эксперту "спасибо"?
  • Отправить SMS #thank 248733 на номер 1151 (Россия) | Еще номера >>
  • Отправить WebMoney:
  • Вам помогли? Пожалуйста, поблагодарите эксперта за это!

    Оценка за ответ: 4


    Вы имеете возможность оценить этот выпуск рассылки.
    Нам очень важно Ваше мнение!
    Оценить этот выпуск рассылки >>

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

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

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

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

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


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

    Скажите "спасибо" эксперту, который помог Вам!

    Отправьте СМС-сообщение с тестом #thank НОМЕР_ОТВЕТА
    на короткий номер 1151 (Россия)

    Номер ответа и конкретный текст СМС указан внизу каждого ответа.

    Полный список номеров >>

    * Стоимость одного СМС-сообщения от 7.15 руб. и зависит от оператора сотовой связи. (полный список тарифов)
    ** При ошибочном вводе номера ответа или текста #thank услуга считается оказанной, денежные средства не возвращаются.
    *** Сумма выплаты эксперту-автору ответа расчитывается из суммы перечислений на портал от биллинговой компании.


    © 2001-2009, Портал RusFAQ.ru, Россия, Москва.
    Авторское право: ООО "Мастер-Эксперт Про"
    Техподдержка портала, тел.: +7 (926) 535-23-31
    Хостинг: "Московский хостер"
    Поддержка: "Московский дизайнер"
    Авторские права | Реклама на портале

    ∙ Версия системы: 5.13 от 01.12.2008

    Яндекс Rambler's Top100
    RusFAQ.ru | MosHoster.ru | MosDesigner.ru
    RusIRC.ru | Kalashnikoff.ru | RadioLeader.ru

    В избранное